跳转至

认证授权微服务 - 项目规划

📋 项目概述

本项目旨在打造一个**开箱即用的认证授权微服务**,为其他业务系统提供统一的用户认证、权限管理和单点登录功能。

设计目标

  • 即插即用:最小化配置,快速集成到任何项目
  • 标准化:基于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周)

  1. 项目架构搭建
  2. 数据库设计与初始化
  3. 用户管理基础功能
  4. JWT认证实现
  5. 基础权限验证

第二阶段:核心功能(3周)

  1. OAuth 2.0完整实现
  2. RBAC权限体系
  3. 多租户支持
  4. Redis缓存集成
  5. 安全增强功能

第三阶段:客户端SDK(1周)

  1. Spring Boot Starter开发
  2. 自动配置实现
  3. 注解式权限验证
  4. 示例项目

第四阶段:管理后台(2周)

  1. 前端框架选型(建议Vue3 + Element Plus)
  2. 用户权限管理界面
  3. 监控与日志界面

第五阶段:完善与优化(1周)

  1. 性能优化
  2. 文档完善
  3. 单元测试
  4. 集成测试

🔌 集成方式

方式一:引入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客户端配置

可选配置

  • 验证码配置
  • 第三方登录配置
  • 安全策略配置
  • 租户配置

🎨 接口设计原则

  1. RESTful风格:遵循REST规范
  2. 统一响应:统一的响应格式
  3. 版本管理:支持API版本控制
  4. 幂等性:关键操作保证幂等性
  5. 文档完善:Swagger/Knife4j文档

🔒 安全考虑

  1. 传输安全:HTTPS传输
  2. 密码安全:BCrypt加密存储
  3. Token安全:短期Access Token + 长期Refresh Token
  4. 防重放:Nonce机制
  5. 限流防刷:接口限流
  6. SQL注入防护:参数化查询
  7. XSS防护:输入输出过滤

📈 性能优化

  1. 缓存策略:Redis缓存用户信息和权限
  2. 连接池:数据库连接池优化
  3. 异步处理:日志异步写入
  4. 索引优化:数据库索引优化
  5. 分页查询:大数据量分页

🧪 测试策略

  1. 单元测试:核心业务逻辑
  2. 集成测试:API接口测试
  3. 性能测试:压力测试
  4. 安全测试:渗透测试

📦 部署方案

  1. Docker容器化
  2. K8s编排
  3. CI/CD流水线
  4. 监控告警:Prometheus + Grafana

📚 文档体系

  1. 项目规划(本文档)
  2. 架构设计文档
  3. API接口文档
  4. 数据库设计文档
  5. 部署运维文档
  6. 快速开始指南
  7. SDK使用文档
  8. 常见问题FAQ

🤝 贡献指南

待项目成熟后,可以开源并接受社区贡献。


下一步行动: 1. 阅读架构设计文档 2. 查看数据库设计文档 3. 开始编码实现