认证授权微服务 - 项目规划¶
📋 项目概述¶
本项目旨在打造一个**开箱即用的认证授权微服务**,为其他业务系统提供统一的用户认证、权限管理和单点登录功能。
设计目标¶
- ✅ 即插即用:最小化配置,快速集成到任何项目
- ✅ 标准化:基于OAuth 2.0、JWT等行业标准
- ✅ 高性能:支持高并发场景,Redis缓存优化
- ✅ 可扩展:模块化设计,支持自定义扩展
- ✅ 多租户:支持多租户隔离
- ✅ 安全可靠:完善的安全机制和审计日志
🏗️ 技术架构¶
技术栈¶
| 技术 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 3.5.7 | 基础框架 |
| Spring Security | 6.x | 安全框架 |
| Spring OAuth2 | 2.x | OAuth2认证 |
| JWT | 0.12.x | Token生成 |
| Redis | 7.x | 缓存/Session存储 |
| MySQL | 8.x | 用户数据存储 |
| MyBatis Plus | 3.5.x | ORM框架 |
| Nacos | 2.x | 服务注册/配置中心 |
| Knife4j | 4.x | API文档 |
核心功能模块¶
auth-service
├── auth-api # API接口定义(供客户端引用)
├── auth-core # 核心服务
│ ├── controller # 控制器层
│ ├── service # 业务逻辑层
│ ├── repository # 数据访问层
│ └── security # 安全配置
├── auth-client # 客户端SDK(供其他服务集成)
└── auth-common # 公共模块
🎯 核心功能清单¶
1. 用户管理模块¶
- 用户注册(支持邮箱/手机号)
- 用户登录(账号密码/手机验证码/第三方登录)
- 用户信息管理(CRUD)
- 密码管理(修改/重置/找回)
- 用户状态管理(启用/禁用/锁定)
- 多租户用户隔离
2. 认证授权模块¶
- JWT Token生成与验证
- OAuth 2.0 授权码模式
- OAuth 2.0 密码模式
- OAuth 2.0 客户端模式
- Refresh Token刷新机制
- 单点登录(SSO)
- 单点登出
- Token续期策略
3. 权限管理模块(RBAC)¶
- 角色管理(CRUD)
- 权限管理(CRUD)
- 用户-角色关联
- 角色-权限关联
- 权限验证(基于注解)
- 数据权限(行级权限)
- 动态权限加载
4. 资源管理模块¶
- 菜单管理(树形结构)
- 按钮权限管理
- API接口权限管理
- 资源权限绑定
5. 租户管理模块¶
- 租户注册与管理
- 租户配置隔离
- 租户数据隔离
- 租户级权限控制
6. 安全增强模块¶
- 登录失败锁定
- 验证码(图形/短信)
- IP白名单/黑名单
- 敏感操作二次验证
- 密码强度策略
- 密码过期策略
- 会话管理(在线用户/强制下线)
7. 审计日志模块¶
- 登录日志
- 操作日志
- 异常日志
- 日志查询与分析
8. 第三方登录¶
- 微信登录
- 企业微信登录
- 钉钉登录
- GitHub登录
- 其他OAuth2提供商
9. 客户端SDK¶
- Spring Boot Starter(自动配置)
- 注解式权限验证
- 拦截器/过滤器自动注入
- Token自动续期
- 用户上下文自动注入
10. 管理后台¶
- 用户管理界面
- 角色权限配置界面
- 菜单资源配置界面
- 在线用户监控
- 日志查询界面
📊 数据库设计¶
核心表结构¶
用户模块:
- sys_user # 用户表
- sys_user_info # 用户详细信息
- sys_user_tenant # 用户租户关联
权限模块:
- sys_role # 角色表
- sys_permission # 权限表
- sys_user_role # 用户角色关联
- sys_role_permission # 角色权限关联
资源模块:
- sys_menu # 菜单表
- sys_api # API接口表
- sys_button # 按钮表
租户模块:
- sys_tenant # 租户表
- sys_tenant_config # 租户配置
OAuth模块:
- oauth_client # 客户端配置
- oauth_token # Token存储(可选,建议用Redis)
日志模块:
- sys_login_log # 登录日志
- sys_operation_log # 操作日志
🚀 实施计划¶
第一阶段:基础功能(2周)¶
- 项目架构搭建
- 数据库设计与初始化
- 用户管理基础功能
- JWT认证实现
- 基础权限验证
第二阶段:核心功能(3周)¶
- OAuth 2.0完整实现
- RBAC权限体系
- 多租户支持
- Redis缓存集成
- 安全增强功能
第三阶段:客户端SDK(1周)¶
- Spring Boot Starter开发
- 自动配置实现
- 注解式权限验证
- 示例项目
第四阶段:管理后台(2周)¶
- 前端框架选型(建议Vue3 + Element Plus)
- 用户权限管理界面
- 监控与日志界面
第五阶段:完善与优化(1周)¶
- 性能优化
- 文档完善
- 单元测试
- 集成测试
🔌 集成方式¶
方式一:引入SDK(推荐)¶
<dependency>
<groupId>cn.zhangziming</groupId>
<artifactId>auth-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
# application.yml
auth:
server:
url: http://auth-service:8080
client:
id: your-client-id
secret: your-client-secret
enabled: true
方式二:直接API调用¶
通过RestTemplate或Feign调用认证服务API
方式三:网关集成¶
在Spring Cloud Gateway统一处理认证
📝 配置说明¶
必需配置¶
- 数据库连接信息
- Redis连接信息
- JWT密钥配置
- OAuth客户端配置
可选配置¶
- 验证码配置
- 第三方登录配置
- 安全策略配置
- 租户配置
🎨 接口设计原则¶
- RESTful风格:遵循REST规范
- 统一响应:统一的响应格式
- 版本管理:支持API版本控制
- 幂等性:关键操作保证幂等性
- 文档完善:Swagger/Knife4j文档
🔒 安全考虑¶
- 传输安全:HTTPS传输
- 密码安全:BCrypt加密存储
- Token安全:短期Access Token + 长期Refresh Token
- 防重放:Nonce机制
- 限流防刷:接口限流
- SQL注入防护:参数化查询
- XSS防护:输入输出过滤
📈 性能优化¶
- 缓存策略:Redis缓存用户信息和权限
- 连接池:数据库连接池优化
- 异步处理:日志异步写入
- 索引优化:数据库索引优化
- 分页查询:大数据量分页
🧪 测试策略¶
- 单元测试:核心业务逻辑
- 集成测试:API接口测试
- 性能测试:压力测试
- 安全测试:渗透测试
📦 部署方案¶
- Docker容器化
- K8s编排
- CI/CD流水线
- 监控告警:Prometheus + Grafana
📚 文档体系¶
- 项目规划(本文档)
- 架构设计文档
- API接口文档
- 数据库设计文档
- 部署运维文档
- 快速开始指南
- SDK使用文档
- 常见问题FAQ
🤝 贡献指南¶
待项目成熟后,可以开源并接受社区贡献。
下一步行动: 1. 阅读架构设计文档 2. 查看数据库设计文档 3. 开始编码实现