Skip to content

认证协议选型分析

文档编号: 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+JWTOIDCSAML 2.0权重
安全性25%
实现复杂度20%
与现有系统集成20%
移动端支持15%
生态成熟度10%
单点登录能力10%
综合得分8.28.86.2100%

4. 选型结论

推荐方案:OAuth 2.0 + OIDC 混合方案

选型理由:

  1. 安全性与标准化:OIDC基于OAuth 2.0,提供完整的认证+授权方案
  2. SSO支持完善:支持单点登录和单点登出,满足多系统集成需求
  3. 生态成熟:Spring Security 6、Keycloak等实现方案丰富
  4. 移动端友好:适合Web、移动、桌面多平台
  5. 未来扩展性:支持社交登录、第三方应用接入

技术栈组合:

  • 认证框架: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. 下一步行动

  1. [ ] 搭建OIDC认证中心(Spring Authorization Server)
  2. [ ] 配置JWT令牌生成和验证
  3. [ ] 实现单点登录和单点登出
  4. [ ] 与现有系统进行集成测试
  5. [ ] 制定安全规范(Token过期时间、刷新策略)

文档版本历史

版本日期修改内容修改人
1.02026-03-10初始版本系统架构师

Released under the MIT License.