单点登录 SSO

当公司只有一个系统时,每个系统自己登录还能接受。一旦有管理后台、数据平台、客服系统、开放平台和多个业务站点,重复登录会让用户体验变差,也会让身份管理变得混乱。SSO 要解决的是:一次登录,多处访问。

SSO 的核心角色

SSO 系统通常包含三个角色:

角色作用
用户浏览器保存登录态,访问多个业务系统
身份提供方 IdP统一认证中心,负责登录和签发身份断言
业务系统 SP依赖 IdP 判断用户身份

业务系统不再各自处理密码,而是把用户重定向到 IdP 登录。登录成功后,IdP 把身份结果安全地传回业务系统。

登录流程

典型 SSO 流程如下:

  1. 用户访问业务系统 A。
  2. A 发现未登录,重定向到认证中心。
  3. 用户在认证中心完成登录。
  4. 认证中心创建全局会话,并带授权码跳回 A。
  5. A 用授权码换取用户身份,创建自己的本地会话。
  6. 用户再访问业务系统 B,B 重定向到认证中心。
  7. 认证中心发现全局会话存在,直接完成登录。

关键点是:认证中心有全局会话,业务系统有本地会话,两者生命周期可能不同。

单点登出

SSO 最容易被低估的是登出。用户在认证中心退出后,是否要让所有业务系统都退出?如果只清掉认证中心会话,业务系统本地会话可能仍然有效。

常见策略有:

  • 前端重定向通知各业务系统登出。
  • 后端通道通知业务系统撤销会话。
  • 缩短业务系统本地会话时间,降低残留风险。

统一登出越彻底,实现越复杂。内部管理系统通常要求更严格,普通内容站点可以更宽松。

安全边界

SSO 中最重要的是信任边界:

  • 业务系统必须验证认证中心签名或回调来源。
  • 授权码必须短期有效、一次性使用。
  • 回跳地址必须白名单校验,防止开放重定向。
  • 不同业务系统只能拿到自己需要的用户信息。

SSO 让身份体验统一,但也让认证中心成为高价值目标。下一章讲 OAuth,处理第三方身份接入和授权委托。