# UnifyAuth **Repository Path**: rehab_chen/unify-auth ## Basic Information - **Project Name**: UnifyAuth - **Description**: 企业级统一认证与权限管理中心,作为全平台的中央身份提供者(IDP)和基础权限数据源,对外提供标准 SSO 能力,对内管理用户、角色、菜单及相互关联。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-04 - **Last Updated**: 2026-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UnifyAuth - 统一认证与权限管理中心 企业级统一认证与权限管理中心,作为全平台的中央身份提供者(IDP)和基础权限数据源,对外提供标准 SSO 能力,对内管理用户、角色、菜单及相互关联。 ## 技术栈 ### 后端 - **框架**: Spring Boot 3.2.5 + Java 17 - **认证**: Spring Authorization Server 1.2.3 (OIDC/OAuth2.0) - **安全**: Spring Security 6.x - **ORM**: MyBatis-Plus 3.5.6 - **数据库**: MySQL 8.0 - **缓存/会话**: Redis 7 - **工具**: Hutool 5.8, Lombok ### 前端 - **框架**: Vue 3.4 + TypeScript - **UI库**: Element Plus 2.6 - **状态管理**: Pinia 2.1 - **路由**: Vue Router 4.3 - **HTTP**: Axios 1.6 - **构建**: Vite 5.2 ## 项目结构 ``` UnifyAuth/ ├── unify-auth-server/ # 后端 Spring Boot 项目 │ ├── src/main/java/com/unifyauth/ │ │ ├── config/ # 配置类(安全、OIDC、CORS、Redis等) │ │ ├── controller/ # REST控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 数据库实体 │ │ ├── mapper/ # MyBatis Mapper接口 │ │ ├── security/ # 安全相关(UserDetails等) │ │ ├── service/ # 业务逻辑层 │ │ └── common/ # 通用工具(响应封装、异常处理、常量) │ └── src/main/resources/ │ ├── application.yml # 应用配置 │ └── db/schema.sql # 数据库建表脚本 ├── unify-auth-ui/ # 前端 Vue3 项目 │ ├── src/ │ │ ├── api/ # API接口定义 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Pinia状态管理 │ │ ├── styles/ # 全局样式 │ │ └── views/ # 页面组件 │ │ ├── login/ # 统一登录页 │ │ ├── layout/ # 管理控制台布局 │ │ ├── dashboard/ # 首页仪表盘 │ │ ├── system/ # 系统管理(用户/角色/菜单) │ │ ├── auth/ # 认证管理(客户端/审计日志) │ │ └── profile/ # 个人中心 │ └── vite.config.ts ├── docs/ # 项目文档 ├── docker-compose.yml # Docker编排 └── README.md ``` ## 快速开始 ### 环境依赖 - JDK 17+ - Node.js 18+ - MySQL 8.0+ - Redis 7+ - Maven 3.8+ ### 1. 启动基础设施 ```bash # 使用 Docker Compose 启动 MySQL 和 Redis docker-compose up -d mysql redis ``` ### 2. 初始化数据库 ```bash # 执行建表脚本 mysql -u root -p < unify-auth-server/src/main/resources/db/schema.sql ``` ### 3. 启动后端 ```bash cd unify-auth-server mvn spring-boot:run ``` 后端启动在 http://localhost:9000 ### 4. 启动前端 ```bash cd unify-auth-ui npm install npm run dev ``` 前端启动在 http://localhost:5173 ### 5. 默认账号 | 用户名 | 密码 | 角色 | |--------|------|------| | admin | admin123 | 超级管理员 | ## 核心功能 ### 统一认证 - ✅ OpenID Connect (OIDC) 协议 - ✅ OAuth 2.0 授权码模式 + PKCE - ✅ JWT (RS256) + JWKS 公钥暴露 - ✅ SSO 单点登录 - ✅ 单点登出 (SLO) - 🔲 SAML 2.0(预留扩展点) - 🔲 MFA 多因素认证(预留扩展点) - 🔲 社交登录/企业联合登录(预留数据表) ### 权限模型管理 - ✅ 用户管理(CRUD、状态、锁定、密码策略) - ✅ 角色管理(CRUD、角色分配菜单/权限) - ✅ 菜单管理(树形结构、目录/菜单/按钮) - ✅ 角色与菜单关联(多对多) - ✅ 超级管理员角色保护(admin 用户的 super_admin 角色不可移除) - ✅ 用户应用授权(管理员为用户分配可访问的应用) - ✅ 内部API获取用户角色和权限菜单 ### 应用与认证管理 - ✅ 应用管理(OAuth2 客户端注册、密钥重置) - ✅ 多策略集成指南(OAuth2/OIDC、CAS SSO、JWT Bearer、API Token) - ✅ API Token 管理(服务间调用认证,细粒度权限范围控制) - ✅ 审计日志(登录/令牌/权限变更) ### 用户自助 - ✅ 个人信息管理 - ✅ 修改密码 - ✅ 已授权应用查看 ## OIDC 端点 | 端点 | 路径 | |------|------| | 发现文档 | `/.well-known/openid-configuration` | | 授权端点 | `/oauth2/authorize` | | 令牌端点 | `/oauth2/token` | | 用户信息 | `/userinfo` | | JWKS | `/oauth2/jwks` | | 登出端点 | `/connect/logout` | ## 部署 ### Docker 部署 ```bash # 构建并启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f unify-auth-server ``` ### 手动部署 ```bash # 一体化构建(前端自动打包并集成到后端 JAR) cd unify-auth-server mvn clean package -DskipTests java -jar target/unify-auth-server-1.0.0-SNAPSHOT.jar # 访问 http://localhost:9000 即可使用 # 跳过前端构建(仅打包后端) mvn clean package -DskipTests -DskipFrontendBuild=true ``` ### 开发模式 开发时前后端分别启动,前端通过 Vite 代理转发 API 请求: ```bash # 后端 cd unify-auth-server mvn spring-boot:run # 前端(另一个终端) cd unify-auth-ui npm run dev # 前端访问 http://localhost:5173,API 请求自动代理到后端 ```