这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
单点登录 SSO
当公司只有一个系统时,每个系统自己登录还能接受。一旦有管理后台、数据平台、客服系统、开放平台和多个业务站点,重复登录会让用户体验变差,也会让身份管理变得混乱。SSO 要解决的是:一次登录,多处访问。
SSO 的核心角色
SSO 系统通常包含三个角色:
| 角色 | 作用 |
|---|---|
| 用户浏览器 | 保存登录态,访问多个业务系统 |
| 身份提供方 IdP | 统一认证中心,负责登录和签发身份断言 |
| 业务系统 SP | 依赖 IdP 判断用户身份 |
业务系统不再各自处理密码,而是把用户重定向到 IdP 登录。登录成功后,IdP 把身份结果安全地传回业务系统。
登录流程
典型 SSO 流程如下:
- 用户访问业务系统 A。
- A 发现未登录,重定向到认证中心。
- 用户在认证中心完成登录。
- 认证中心创建全局会话,并带授权码跳回 A。
- A 用授权码换取用户身份,创建自己的本地会话。
- 用户再访问业务系统 B,B 重定向到认证中心。
- 认证中心发现全局会话存在,直接完成登录。
关键点是:认证中心有全局会话,业务系统有本地会话,两者生命周期可能不同。
单点登出
SSO 最容易被低估的是登出。用户在认证中心退出后,是否要让所有业务系统都退出?如果只清掉认证中心会话,业务系统本地会话可能仍然有效。
常见策略有:
- 前端重定向通知各业务系统登出。
- 后端通道通知业务系统撤销会话。
- 缩短业务系统本地会话时间,降低残留风险。
统一登出越彻底,实现越复杂。内部管理系统通常要求更严格,普通内容站点可以更宽松。
安全边界
SSO 中最重要的是信任边界:
- 业务系统必须验证认证中心签名或回调来源。
- 授权码必须短期有效、一次性使用。
- 回跳地址必须白名单校验,防止开放重定向。
- 不同业务系统只能拿到自己需要的用户信息。
SSO 让身份体验统一,但也让认证中心成为高价值目标。下一章讲 OAuth,处理第三方身份接入和授权委托。