🔒 统一认证平台 v2.0

Ethan认证中心

基于 Spring Security + OAuth 2.0 的统一身份认证平台,提供用户注册登录、第三方授权、后台管理与安全审计全套能力

6数据表
20+API 接口
3角色层级
7安全措施
平台概述

核心能力一览

三大核心模块,覆盖认证、授权与管理的完整闭环

用户认证

支持邮箱注册、账号密码登录、JWT 双 Token 机制(Access + Refresh),密码修改需邮件验证码确认,确保账户安全。

OAuth 2.0 授权

实现标准授权码流程(Authorization Code Grant),支持第三方客户端注册、回调 URL 校验、授权码生成与 Token 换取。

后台管理

超级管理员可管理普通用户、下级管理员、OAuth 客户端及访问权限,所有操作记录审计日志,支持分页、搜索与状态切换。

系统架构

整体架构设计

前后端分离 + 容器化部署的微认证架构

🌐 用户浏览器 Nginx 反向代理 💻 Vue 3 + Element Plus ⚙️ Spring Boot 3 + JPA REST API 📦 MySQL 8.0 Redis 7 🐳 Docker Compose — 一键编排部署
核心流程

OAuth 2.0 授权码流程

标准四步授权码流程,安全可靠地实现第三方应用接入

1

客户端发起授权请求

第三方应用携带 client_idredirect_uriresponse_type=code 参数重定向至 GET /oauth2/authorize,认证中心校验客户端身份与回调 URL 合法性。

2

用户登录并授权

用户在认证中心登录页输入账号密码,提交至 POST /oauth2/login,验证通过后生成一次性授权码 authorization_code

3

授权码换取 Token

第三方应用后端使用授权码请求 POST /oauth2/token,认证中心校验授权码有效性(未过期、未使用)后,返回 access_tokenrefresh_token

4

获取用户信息

第三方应用携带 access_token 请求 GET /api/auth/userinfo,获取当前授权用户的基本信息(ID、用户名、邮箱)。

功能模块

完整功能矩阵

覆盖认证、授权、管理三条业务线的全部功能

用户注册

邮箱 + 用户名 + 密码注册,BCrypt 加密存储,默认角色 USER,注册即启用。

JWT 双 Token 机制

Access Token(30分钟)+ Refresh Token(7天)Redis 存储,支持无感刷新与 Token 轮转。

密码管理

支持通过邮箱验证码修改密码,管理员可重置任意用户密码,BCrypt 加密不可逆。

OAuth 2.0 服务端

完整的授权码流程实现,支持客户端管理(CRUD)、重定向 URI 校验、授权码过期与防重用。

三级角色体系

SUPER_ADMIN(超级管理员)、ADMIN(普通管理员)、USER(普通用户),Spring Security 方法级鉴权。

全量审计日志

记录用户创建/删除、状态变更、密码重置、客户端操作等所有管理行为,可追溯可查询。

登录历史追踪

完整记录每次登录的时间、IP、User-Agent 及成功/失败状态,异常登录一目了然。

Bucket4j 接口限流

登录 5次/分钟、注册 3次/小时、验证码 1次/分钟,精细化令牌桶限流防暴力破解。

客户端用户权限

精细化控制哪些用户有权访问指定 OAuth 客户端,防止未授权用户通过第三方应用登录。

API 接口

RESTful API 一览

标准化 JSON 响应格式,统一 ResponseDTO 封装

方法 接口路径 功能描述 权限
POST/api/auth/register用户注册公开
POST/api/auth/login用户登录,返回双 Token公开
POST/api/auth/refresh刷新 Access Token公开
POST/api/auth/logout退出登录,撤销 Refresh Token已认证
GET/api/auth/userinfo获取当前用户信息已认证
POST/api/auth/password/code发送修改密码验证码已认证
POST/api/auth/password/change验证码修改密码已认证
POST/api/admin/login管理员登录公开
GET/api/admin/users用户列表(分页+搜索)管理员
GET/api/admin/users/{id}用户详情管理员
POST/api/admin/users管理员创建用户管理员
DELETE/api/admin/users/{id}删除用户管理员
PUT/api/admin/users/{id}/status启用/禁用用户管理员
POST/api/admin/users/{id}/reset-password重置用户密码管理员
GET/api/admin/clients客户端列表管理员
POST/api/admin/clients创建客户端管理员
PUT/api/admin/clients/{clientId}更新客户端管理员
PUT/api/admin/clients/{clientId}/status启用/禁用客户端管理员
GET/api/admin/audit-logs审计日志列表管理员
GET/oauth2/authorizeOAuth2 授权入口公开
POST/oauth2/loginOAuth2 用户登录公开
POST/oauth2/token授权码换取 Token公开
安全机制

七层安全防护体系

从网络层到应用层的纵深防御

BCrypt 密码加密

所有密码使用 BCryptPasswordEncoder 加盐哈希存储,不可逆,数据库泄露也无法还原明文。

JWT 无状态认证

服务端不存储 session,通过签名校验的 JWT Token 进行身份验证,天然支持分布式扩展。

Bucket4j 接口限流

基于令牌桶算法的 IP 级别限流,登录 5次/分钟、注册 3次/小时,有效防止暴力破解和 DDoS。

CORS 跨域白名单

仅允许配置的域名列表跨域访问,严格限制 HTTP 方法与请求头,防止 CSRF 攻击。

XSS 输入过滤

所有用户输入经过 XssUtils 特殊字符转义处理,防止跨站脚本注入攻击。

全量审计追踪

所有敏感操作(创建/删除用户、密码重置、客户端变更)写入审计日志,满足安全合规要求。

数据库隔离设计

独立数据库实例,密钥通过环境变量注入不写入代码,生产配置与开发隔离。

技术栈

核心技术选型

主流稳定技术栈,前后端分离 + 容器化部署

Spring Boot 3
后端框架
Vue 3
前端框架
+
Element Plus
UI 组件库
JS
Vite
构建工具
MySQL 8.0
关系数据库
Redis 7
缓存&Token存储
SM
Spring Security
安全框架
Docker Compose
容器编排