认证协议选型分析
文档编号: SYS-TR-TS-004
版本: 1.0
日期: 2026-03-10
编制: 系统架构师
审核: 审核通过 ✅
1. 选型背景
系统平台需要实现统一的身份认证和单点登录(SSO),支持多系统集成。认证协议选型需要考虑:
- 安全性要求
- 与现有系统集成
- 实现复杂度
- 行业标准支持
- 移动端支持
2. 候选方案
方案一:OAuth 2.0 + JWT
技术特点:
- 行业标准的授权框架
- 令牌机制,无状态认证
- 支持多种授权模式
- 广泛应用于互联网应用
优势:
- 生态成熟,实现方案丰富
- Spring Security OAuth2支持完善
- JWT令牌自包含,无需会话存储
- 适合微服务架构
- 移动端支持好
劣势:
- 仅定义授权,不定义认证
- JWT令牌无法主动失效(需配合黑名单)
- 令牌大小随 claims 增加
适用场景:
- Web应用和移动应用
- 微服务架构
- 第三方应用接入
方案二:OpenID Connect (OIDC)
技术特点:
- 基于OAuth 2.0的身份认证层
- 标准化用户信息获取
- 支持ID Token
- 单点登录标准协议
优势:
- 完整的认证+授权解决方案
- 标准化用户信息格式
- 支持单点登出(SLO)
- 国际大厂支持(Google、Microsoft)
- 发现机制(Discovery)
劣势:
- 实现复杂度高于纯OAuth 2.0
- 需要额外的用户信息端点
- 学习成本较高
适用场景:
- 企业级SSO
- 多系统集成
- 需要标准化身份认证
方案三:SAML 2.0
技术特点:
- 企业级单点登录标准
- 基于XML的断言
- 成熟的联邦身份管理
- 广泛的企业软件支持
优势:
- 企业级标准,安全性高
- 与AD/LDAP集成成熟
- 现有企业软件支持好(SAP、Oracle)
- 支持属性断言
劣势:
- 实现复杂,配置繁琐
- XML格式较重
- 移动端支持不佳
- 现代应用中使用减少
适用场景:
- 传统企业应用集成
- 与AD/LDAP深度集成
- 已有SAML基础设施
3. 评估对比
| 评估维度 | OAuth 2.0+JWT | OIDC | SAML 2.0 | 权重 |
|---|---|---|---|---|
| 安全性 | 高 | 高 | 高 | 25% |
| 实现复杂度 | 低 | 中 | 高 | 20% |
| 与现有系统集成 | 高 | 高 | 中 | 20% |
| 移动端支持 | 高 | 高 | 低 | 15% |
| 生态成熟度 | 高 | 高 | 中 | 10% |
| 单点登录能力 | 中 | 高 | 高 | 10% |
| 综合得分 | 8.2 | 8.8 | 6.2 | 100% |
4. 选型结论
推荐方案:OAuth 2.0 + OIDC 混合方案
选型理由:
- 安全性与标准化:OIDC基于OAuth 2.0,提供完整的认证+授权方案
- SSO支持完善:支持单点登录和单点登出,满足多系统集成需求
- 生态成熟:Spring Security 6、Keycloak等实现方案丰富
- 移动端友好:适合Web、移动、桌面多平台
- 未来扩展性:支持社交登录、第三方应用接入
技术栈组合:
- 认证框架:Spring Security 6 + OAuth 2.0
- 授权服务器:Spring Authorization Server / Keycloak
- 令牌类型:JWT(Access Token + Refresh Token)
- 单点登录:OIDC协议
- 会话管理:Redis存储
认证流程:
┌─────────┐ ┌─────────────┐ ┌──────────┐
│ 用户 │ ──────> │ 客户端应用 │ ──────> │ 认证中心 │
│ (浏览器)│ │ (Vue前端) │ │ (OIDC) │
└─────────┘ └─────────────┘ └──────────┘
│ │
│ 1. 重定向到登录页 │
│<───────────────────│
│ │
│ 2. 用户登录认证 │
│───────────────────>│
│ │
│ 3. 返回授权码 │
│<───────────────────│
│ │
│ 4. 换取Token │
│───────────────────>│
│ │
│ 5. 返回JWT Token │
│<───────────────────│
│ │
│ 6. 访问受保护资源 │
│───────────────────>│5. 风险与应对
| 风险点 | 影响 | 应对措施 |
|---|---|---|
| JWT令牌泄露 | 高 | 设置合理过期时间,使用HTTPS,敏感操作二次认证 |
| 令牌无法主动失效 | 中 | 使用Redis黑名单,或缩短Token有效期 |
| 与现有系统集成复杂度 | 中 | 提供适配器模式,渐进式迁移 |
| 会话管理复杂度 | 低 | 使用Redis集中管理会话状态 |
6. 下一步行动
- [ ] 搭建OIDC认证中心(Spring Authorization Server)
- [ ] 配置JWT令牌生成和验证
- [ ] 实现单点登录和单点登出
- [ ] 与现有系统进行集成测试
- [ ] 制定安全规范(Token过期时间、刷新策略)
文档版本历史
| 版本 | 日期 | 修改内容 | 修改人 |
|---|---|---|---|
| 1.0 | 2026-03-10 | 初始版本 | 系统架构师 |
