SSO单点登录
1. 单点登录方案
Section titled “1. 单点登录方案”1.1. 基于 Session 的单点登录
Section titled “1.1. 基于 Session 的单点登录”Session 是最传统的单点登录实现方式之一。
1.1.1. 工作原理
Section titled “1.1.1. 工作原理”- 用户登录时在 SSO 服务器创建全局会话
- 各子系统通过共享 Session 实现登录状态同步
- 用户登出时销毁全局会话
1.1.2. 优点
Section titled “1.1.2. 优点”- 实现简单,易于理解
- 安全性较高
- 适合同域应用
1.1.3. 缺点
Section titled “1.1.3. 缺点”- 服务器需要存储会话信息,增加服务器负载
- 跨域场景下需要处理复杂的 Cookie 问题
- 集群环境下需要 Session 共享方案
1.1.4. 技术架构
Section titled “1.1.4. 技术架构”┌──────────────┐ ┌──────────────┐│ Browser │ │ SSO Server │└──────┬───────┘ └──────┬───────┘ │ │ │ 1. 登录请求 │ │──────────────────> │ │ │ │ 2. 创建Session │ │ <─────────────────│ │ │┌──────┼────────┐ ││ Application A │ │└──────┬────────┘ │ │ 3. 访问 │ │──────────────────>│ │ 4. 验证Session │ │<──────────────────│1.1.5. 详细流程
Section titled “1.1.5. 详细流程”- 用户首次访问 SSO 服务器进行登录
- SSO 服务器创建全局会话,设置 Cookie
- 用户访问子系统时携带 Cookie
- 子系统通过 SSO 服务器验证 Session 有效性
- 用户登出时,SSO 服务器销毁全局会话
1.2. 基于 Token 的单点登录
Section titled “1.2. 基于 Token 的单点登录”1.2.1. 工作原理
Section titled “1.2.1. 工作原理”- 用户登录后获取 Token
- Token 携带用户信息和权限
- 各系统通过验证 Token 实现身份认证
1.2.2. 优点
Section titled “1.2.2. 优点”- 无状态,服务器不需存储会话信息
- 适合分布式环境
- 跨域支持好
1.2.3. 缺点
Section titled “1.2.3. 缺点”- Token 管理复杂
- 注销实现相对复杂
- Token 泄露风险
1.2.4. 技术架构
Section titled “1.2.4. 技术架构”┌──────────────┐ ┌──────────────┐│ Browser │ │ Auth Server │└──────┬───────┘ └──────┬───────┘ │ │ │ 1. 登录请求 │ │──────────────────> │ │ │ │ 2. 返回Token │ │ <─────────────────│ │ │┌──────┼────────┐ ││ Application A │ │└──────┬────────┘ │ │ 3. 携带Token │ │──────────────────>│ │ 4. 验证Token │ │<──────────────────│1.2.5. 详细流程
Section titled “1.2.5. 详细流程”- 用户登录认证服务器
- 认证服务器生成 Token 并返回
- 客户端存储 Token(LocalStorage/Cookie)
- 后续请求携带 Token 在 Header 中
- 各子系统验证 Token 有效性
1.3. 基于 OAuth2.0 的单点登录
Section titled “1.3. 基于 OAuth2.0 的单点登录”OAuth2.0 是一个授权框架,常用于第三方登录。
1.3.1. 授权模式
Section titled “1.3.1. 授权模式”- 授权码模式
- 简化模式
- 密码模式
- 客户端模式
1.3.2. 适用场景
Section titled “1.3.2. 适用场景”- 第三方应用授权
- 移动应用登录
- 微服务架构
1.3.3. 安全考虑
Section titled “1.3.3. 安全考虑”- 使用 HTTPS
- Token 有效期管理
- 刷新 Token 机制
1.4. 基于 SAML 的单点登录
Section titled “1.4. 基于 SAML 的单点登录”SAML (Security Assertion Markup Language) 是一个基于 XML 的开放标准。
1.4.1. 特点
Section titled “1.4.1. 特点”- 基于 XML 格式
- 支持跨域
- 提供丰富的安全断言
1.4.2. 应用场景
Section titled “1.4.2. 应用场景”- 企业级应用
- 政府部门
- 教育机构
1.5. 基于 CAS 的单点登录
Section titled “1.5. 基于 CAS 的单点登录”CAS (Central Authentication Service) 是一个开源的企业级单点登录解决方案。
1.5.1. 核心概念
Section titled “1.5.1. 核心概念”- TGT (Ticket Granting Ticket)
- ST (Service Ticket)
- CAS Client
- CAS Server
1.5.2. 工作流程
Section titled “1.5.2. 工作流程”- 用户访问应用
- 重定向到 CAS 服务器
- 认证通过后返回 ST
- 应用验证 ST
1.5.3. 详细技术架构
Section titled “1.5.3. 详细技术架构”┌──────────┐ ┌──────────┐ ┌──────────┐│ Browser │ │ CAS │ │ App ││ │ │ Server │ │ │└────┬─────┘ └────┬─────┘ └────┬─────┘ │ 1. 访问应用 │ │ │────────────────────────────────>│ │ │ │ │ 2. 重定向到CAS │ │<────────────────────────────────│ │ │ │ │ 3. CAS登录 │ │ │───────────────>│ │ │ │ │ │ 4. TGT+Cookie│ │ │<───────────────│ │ │ │ │ │ 5. ST请求 │ │ │───────────────>│ │ │ │ │ │ 6. 返回ST │ │ │<───────────────│ │ │ │ │ │ 7. 访问应用(带ST) │ │────────────────────────────────>│ │ │ │ │ 8. 验证ST │ │ │ │<──────────────│ │ │ │ │ 9. ST有效 │ │ │ │──────────────>│ │ │ │ │ 10. 返回响应 │ │ │<────────────────────────────────│1.6. 基于 JWT 的单点登录
Section titled “1.6. 基于 JWT 的单点登录”JWT (JSON Web Token) 是一种轻量级的认证方案。
1.6.1. Token 结构
Section titled “1.6.1. Token 结构”- Header(头部)
- Payload(负载)
- Signature(签名)
1.6.2. 特点
Section titled “1.6.2. 特点”- 自包含(包含用户信息)
- 无状态
- 支持跨域
1.6.3. 安全建议
Section titled “1.6.3. 安全建议”- 合理设置过期时间
- 使用强密钥
- 考虑刷新 Token 机制
1.7. 基于 Redis 的单点登录
Section titled “1.7. 基于 Redis 的单点登录”1.7.1. 实现方式
Section titled “1.7.1. 实现方式”- 用户信息存储在 Redis
- Session ID 作为 Key
- 分布式 Session 共享
1.7.2. 优势
Section titled “1.7.2. 优势”- 高性能
- 支持集群
- 可设置过期时间
1.7.3. 注意事项
Section titled “1.7.3. 注意事项”- Redis 高可用
- 数据持久化
- 网络延迟
1.8. 单点登录安全考虑
Section titled “1.8. 单点登录安全考虑”1.8.1. 通用安全措施
Section titled “1.8.1. 通用安全措施”- HTTPS 传输
- 防止 XSS 攻击
- 防止 CSRF 攻击
- 密码加密存储
- 登录失败次数限制
1.8.2. 最佳实践
Section titled “1.8.2. 最佳实践”- 定期修改密钥
- 日志监控
- 异常检测
- 多因素认证
- 会话管理
1.9. 选择建议
Section titled “1.9. 选择建议”1.9.1. 考虑因素
Section titled “1.9.1. 考虑因素”- 系统规模
- 安全需求
- 性能要求
- 维护成本
- 用户体验
1.9.2. 常见场景推荐
Section titled “1.9.2. 常见场景推荐”- 小型同域应用:Session 方案
- 大型分布式系统:JWT/Token 方案
- 企业应用:CAS/SAML 方案
- 开放平台:OAuth2.0 方案