1. SSO 基础概念:什么是单点登录、核心价值与 OAuth2.0 的关系

1.1 什么是单点登录

单点登录(Single Sign-On,SSO)是一种身份认证机制,允许用户使用一组凭证(如用户名/密码)登录一次,即可访问多个相互信任的应用系统,而无需在每个系统中重复输入凭证。

从架构视角看,SSO 的核心是建立一个统一的认证中心(Identity Provider,IdP),所有应用系统(Service Provider,SP)将认证决策委托给该中心。用户只需在 IdP 完成一次认证,后续访问其他 SP 时,IdP 会向 SP 签发一个已认证的令牌(Token),SP 验证令牌后即允许用户访问。

关键特征: 一次认证,多点通行;认证与授权分离;集中管理用户会话。

1.2 SSO 的核心价值

SSO 并非单纯为了减少登录次数,它在企业级分布式系统中具有深远的架构价值。下表从多个维度对比了 SSO 与传统独立认证的差异:

维度 传统独立认证 SSO 统一认证
用户体验 每套系统独立登录,频繁输入凭证 一次登录,无缝切换,提升效率
安全管控 密码分散存储,难以统一策略 集中管理密码策略、多因素认证(MFA)
运维成本 每套系统独立维护用户库 统一用户目录,降低账号管理开销
审计合规 日志分散,难以追溯全链路 集中审计,完整记录用户访问轨迹
扩展性 新增系统需重新对接认证逻辑 标准化协议对接,快速集成新应用
架构启示: 在微服务与多前端(Web、移动端、桌面端)并存的场景下,SSO 是构建统一身份基座的前提,也是后续实现细粒度权限控制(RBAC/ABAC)的基础。

1.3 SSO 与 OAuth2.0 的关系

SSO 和 OAuth2.0 经常被混淆,但两者解决的是不同层次的问题。SSO 关注身份认证(你是谁),OAuth2.0 关注授权委托(你能做什么)。然而,在实际工程中,两者常常协同工作。

下表清晰展示了它们的核心区别:

对比项 SSO(单点登录) OAuth2.0(开放授权)
核心目标 一次认证,访问多个系统 资源所有者委托第三方应用访问其资源
主要参与者 用户、认证中心、应用系统 资源所有者、客户端、授权服务器、资源服务器
产出物 会话令牌(Session Token / Cookie) 访问令牌(Access Token)、刷新令牌(Refresh Token)
典型协议 SAML、CAS、Kerberos OAuth2.0、OpenID Connect
是否包含用户身份 是,核心是验证用户身份 否,核心是授权访问,不强制传递用户身份

在实际架构中,OpenID Connect(OIDC) 是 OAuth2.0 之上的一层身份认证协议,它让 OAuth2.0 具备了 SSO 的能力。OIDC 在 OAuth2.0 的 Access Token 基础上,额外返回一个 ID Token(JWT 格式),其中包含用户的身份信息,从而实现了“授权 + 认证”的统一。

常见误区: 不要认为实现了 OAuth2.0 就等于实现了 SSO。OAuth2.0 本身不定义用户如何登录,它只定义令牌如何发放。真正的 SSO 需要结合 OIDC 或类似协议来传递用户身份信息。

1.4 SSO 核心架构示意图

下图展示了 SSO 的基本交互流程,帮助理解认证中心、应用系统与用户之间的协作关系:

SSO 单点登录核心架构流程图 SSO 单点登录核心架构流程图 用户 应用系统 A 应用系统 B 统一认证中心 (IdP) 1. 访问请求 2. 重定向认证 3. 登录页面 / 令牌下发 4. 携带令牌访问 5. 验证令牌 6. 授权访问 7. 直接访问(已认证) 8. 验证令牌 9. 授权访问 流程说明: 1. 用户首次访问应用 A,被重定向到统一认证中心登录。 2. 登录成功后,认证中心下发全局令牌,用户携带令牌访问 A 和 B。 3. 应用系统验证令牌有效后,允许用户访问,无需再次登录。

1.5 SSO 与 OAuth2.0 的协作关系图

为了更直观地理解 SSO 与 OAuth2.0 在实际系统中的协作方式,下图展示了基于 OIDC 的 SSO 架构:

SSO 与 OAuth2.0 / OIDC 协作架构图 SSO 与 OAuth2.0 / OIDC 协作架构图 用户 客户端应用 (SP / 资源请求方) OAuth2.0 授权服务器 OIDC 身份层 (ID Token + UserInfo) 资源服务器 1. 访问请求 2. 授权请求 3. 身份认证 4. ID Token + Access Token 5. 携带 Access Token 访问资源 6. 返回资源 关键理解: OAuth2.0 负责令牌发放与授权委托,OIDC 在 OAuth2.0 之上增加身份认证层,两者结合实现真正的 SSO。

1.6 小结

  • SSO 解决的是“一次登录,全网通行”的认证问题,核心是统一认证中心与会话共享。
  • OAuth2.0 解决的是“第三方应用如何安全访问用户资源”的授权问题,不直接处理用户身份。
  • OpenID Connect 是 OAuth2.0 的身份认证扩展,是当前实现 SSO 的主流方案。
  • 在分布式系统架构中,SSO 是身份基座,OAuth2.0/OIDC 是协议载体,两者结合才能构建安全、可扩展的统一认证体系。