基于 Spring Security + OAuth 2.0 的统一身份认证平台,提供用户注册登录、第三方授权、后台管理与安全审计全套能力
三大核心模块,覆盖认证、授权与管理的完整闭环
支持邮箱注册、账号密码登录、JWT 双 Token 机制(Access + Refresh),密码修改需邮件验证码确认,确保账户安全。
实现标准授权码流程(Authorization Code Grant),支持第三方客户端注册、回调 URL 校验、授权码生成与 Token 换取。
超级管理员可管理普通用户、下级管理员、OAuth 客户端及访问权限,所有操作记录审计日志,支持分页、搜索与状态切换。
前后端分离 + 容器化部署的微认证架构
标准四步授权码流程,安全可靠地实现第三方应用接入
第三方应用携带 client_id、redirect_uri、response_type=code 参数重定向至 GET /oauth2/authorize,认证中心校验客户端身份与回调 URL 合法性。
用户在认证中心登录页输入账号密码,提交至 POST /oauth2/login,验证通过后生成一次性授权码 authorization_code。
第三方应用后端使用授权码请求 POST /oauth2/token,认证中心校验授权码有效性(未过期、未使用)后,返回 access_token 与 refresh_token。
第三方应用携带 access_token 请求 GET /api/auth/userinfo,获取当前授权用户的基本信息(ID、用户名、邮箱)。
覆盖认证、授权、管理三条业务线的全部功能
邮箱 + 用户名 + 密码注册,BCrypt 加密存储,默认角色 USER,注册即启用。
Access Token(30分钟)+ Refresh Token(7天)Redis 存储,支持无感刷新与 Token 轮转。
支持通过邮箱验证码修改密码,管理员可重置任意用户密码,BCrypt 加密不可逆。
完整的授权码流程实现,支持客户端管理(CRUD)、重定向 URI 校验、授权码过期与防重用。
SUPER_ADMIN(超级管理员)、ADMIN(普通管理员)、USER(普通用户),Spring Security 方法级鉴权。
记录用户创建/删除、状态变更、密码重置、客户端操作等所有管理行为,可追溯可查询。
完整记录每次登录的时间、IP、User-Agent 及成功/失败状态,异常登录一目了然。
登录 5次/分钟、注册 3次/小时、验证码 1次/分钟,精细化令牌桶限流防暴力破解。
精细化控制哪些用户有权访问指定 OAuth 客户端,防止未授权用户通过第三方应用登录。
标准化 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/authorize | OAuth2 授权入口 | 公开 |
| POST | /oauth2/login | OAuth2 用户登录 | 公开 |
| POST | /oauth2/token | 授权码换取 Token | 公开 |
从网络层到应用层的纵深防御
所有密码使用 BCryptPasswordEncoder 加盐哈希存储,不可逆,数据库泄露也无法还原明文。
服务端不存储 session,通过签名校验的 JWT Token 进行身份验证,天然支持分布式扩展。
基于令牌桶算法的 IP 级别限流,登录 5次/分钟、注册 3次/小时,有效防止暴力破解和 DDoS。
仅允许配置的域名列表跨域访问,严格限制 HTTP 方法与请求头,防止 CSRF 攻击。
所有用户输入经过 XssUtils 特殊字符转义处理,防止跨站脚本注入攻击。
所有敏感操作(创建/删除用户、密码重置、客户端变更)写入审计日志,满足安全合规要求。
独立数据库实例,密钥通过环境变量注入不写入代码,生产配置与开发隔离。
主流稳定技术栈,前后端分离 + 容器化部署