Single Sign-On (SSO)
统一登录
Single Sign-On (SSO) 是一种认证流程,用户用一套登录凭证就能访问多个应用或网站,无需重复登录。
用户凭证与身份信息由集中式的 Identity Provider (IdP) 管理。IdP 作为可信系统,为多个应用提供认证能力。
SSO 常用于企业环境,员工需要访问多个内部系统。
Components
Identity Provider (IdP)
IdP 负责管理用户身份,完成认证并向 service provider 提供身份断言。它既可以直接验证用户名/密码,也可以验证其他 IdP 提供的身份断言,从而减轻 service provider 的身份管理负担。
Service Provider
Service provider 为终端用户提供服务,依赖 IdP 来确认用户身份,同时也可能维护本地账户及服务特有的用户属性。
Identity Broker
Identity broker 连接多个 service providers 与多个 IdPs,帮助跨协议实现 SSO。
SAML
Security Assertion Markup Language (SAML) 是开放标准,用于在系统间共享身份、认证与权限信息。它基于 XML,支持身份联邦,允许 IdP 安全地将认证信息传递给 service provider。
SSO 如何工作?

- 用户请求应用资源。
- 应用将用户重定向到 IdP 认证。
- 用户登录(用户名/密码)。
- IdP 将 SSO 响应返回应用。
- 应用授予访问。
SAML vs OAuth 2.0 vs OIDC
SAML 用 XML,OAuth/OIDC 用 JSON。OAuth 体验更轻量,SAML 偏企业级安全。
OAuth/OIDC 倾向 RESTful 通信,更适合 mobile 与现代 web;SAML 更依赖 browser session cookie,适合短期访问。
OIDC 对开发者更友好,库丰富,实现成本低;SAML 安装维护复杂,通常大型企业更能胜任。
OIDC 在 OAuth 之上增加用户 consent 层;SAML 也可做 consent,但更多依赖应用硬编码。
两者都各有优势,取决于你的场景与用户。
Advantages
- 用户体验好,只记一套凭证
- 登录流程更简化
- 统一安全与合规
- 降低 IT 支持成本
Disadvantages
- SSO 密码泄露会导致所有应用被影响
- 认证流程比传统登录更慢