在构建大型分布式系统时,确保用户身份的统一认证是核心挑战之一。单点登录(SSO)系统为此提供了优雅的解决方案。
什么是单点登录(SSO)?
单点登录(Single Sign-On,简称SSO)是一种认证机制,旨在使用户在一次身份验证后,能够无缝访问多个相互信任的应用系统。SSO 提高了用户体验、降低了凭证管理成本,同时便于安全审计与集中控制。

单点登录系统原理
一套完整的 SSO 系统,通常包含以下三个角色:

1. User(用户)
持有合法身份凭证的访问者,登录行为的发起者。用户通过浏览器或移动端 App 作为载体。它并不直接参与逻辑运算,但负责携带和传递凭证(如 Cookie, Token)。状态存储:在浏览器场景下,用户端存储着 sso.com 的全局会话(TGC)和 app.com 的局部会话。
2. Web / App Server
实际提供业务资源的系统,不直接保存用户主凭证。完全信任 SSO Server 的认证结果。核心职责包括判断当前请求是否已登录;将未登录用户重定向到 SSO Server;校验 SSO Server 颁发的凭证。
3. SSO Server(认证中心)
全局唯一的身份认证权威,所有登录、校验、注销的唯一入口。完整职责包括用户身份认证(用户名、密码、MFA);生成全局登录态(SSO Session);签发凭证(Ticket / Token);校验凭证合法性;统一注销(Single Logout)。
单点登录系统流程

- 用户访问 A 系统 /order (无票据)。
- A系统重定向 → SSO Server?redirect_uri=A/order。
- SSO检查全局Cookie,无会话 → 登录页。
- 用户输入账号密码 → SSO验证 → 创建全局Session → 重定向回A + 票据ST。
- A系统用ST向SSO换取用户信息 → 建立本地会话 → 返回 /order 页面。
- 用户访问B系统 → B用相同全局Cookie直接通过。
通过以上流程,SSO 系统实现了跨应用的身份一致性,其底层常依赖HTTP/HTTPS协议进行重定向和通信。对于更深入的系统设计讨论,可以参考云栈社区的相关技术文章。
|