1. SSO 基础概念:什么是单点登录、核心价值与传统登录的区别

1.1 什么是单点登录

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

核心定义:SSO 在多个服务之间建立统一的认证中心,用户只需完成一次全局认证,后续访问所有关联应用时,认证中心自动验证用户身份,无需再次登录。

SSO 的典型工作流程包含三个角色:

  • 用户(User): 持有全局凭证的终端使用者。
  • 认证中心(Auth Center / IDP): 负责验证用户身份、颁发全局票据(Token / Ticket)的中心服务。
  • 应用服务(SP - Service Provider): 依赖认证中心验证用户身份的业务系统,本身不存储用户密码。
SSO 单点登录核心架构 SSO 单点登录核心架构 用户 (浏览器/客户端) 认证中心 (IDP) 应用 A 应用 B 应用 C ① 登录请求 ② 颁发全局票据 ③ 携带票据访问 ④ 验证票据 ⑤ 确认身份 一次登录,全局通行 用户只需在认证中心登录一次,即可凭票据访问所有信任的应用系统

1.2 SSO 的核心价值

SSO 并非单纯为了减少登录次数,它在企业级架构中带来以下关键收益:

价值维度 具体收益 典型场景
用户体验提升 用户只需记住一组密码,跨系统切换无需重复认证 企业内网门户、SaaS 套件
安全管控集中 认证策略、密码策略、多因子认证(MFA)在认证中心统一管理 金融、政务等高安全环境
运维成本降低 各应用无需自建用户认证模块,减少重复开发和维护 微服务架构、多系统集成
审计与合规 所有登录行为集中在认证中心记录,便于审计追踪 GDPR、SOX 合规要求
减少密码疲劳 降低用户因记忆多套密码而使用弱密码或重复密码的风险 员工账号管理、教育平台
架构视角:SSO 将认证逻辑从业务应用中抽离,形成独立的认证基础设施。这种解耦使得认证策略的变更(如引入生物识别)不会影响业务代码,是分布式系统架构中"关注点分离"原则的典型实践。

1.3 SSO 与传统登录的区别

传统登录模式下,每个应用系统独立管理用户凭证和会话;SSO 模式下,认证与授权分离,会话由认证中心统一维护。两者的核心差异如下:

对比维度 传统登录 SSO 单点登录
凭证存储 每个应用各自存储用户密码/凭证 凭证集中存储在认证中心
登录次数 每个应用需独立登录 一次登录,全局通行
会话管理 各应用维护自己的 Session 认证中心维护全局 Session,应用通过 Token 验证
登出操作 需在每个应用单独登出 单点登出(SLO),一次登出退出所有系统
安全风险 密码泄露面广,每个系统都可能成为攻击入口 攻击面集中在认证中心,可集中部署防护措施
实现复杂度 简单,各系统独立实现 需要统一协议(如 SAML、OIDC、CAS)和信任关系
扩展性 新增系统需重新开发认证模块 新增系统只需对接认证中心,快速接入
传统登录 vs SSO 单点登录流程对比 传统登录 vs SSO 单点登录流程对比 传统登录模式 用户输入密码 应用 A 应用 B 应用 C ✗ 每个应用独立验证密码 ✗ 需重复登录 3 次 SSO 单点登录模式 用户输入密码(仅一次) 认证中心 应用 A 应用 B 应用 C ✓ 认证中心统一验证 ✓ 一次登录访问所有应用 SSO 将认证从应用层抽离到基础设施层,实现认证逻辑与业务逻辑的解耦

1.4 常见 SSO 协议概览

在实际工程中,SSO 的实现依赖标准协议来保证跨系统互操作性。以下是三种主流协议:

协议 消息格式 适用场景 典型代表
SAML 2.0 XML(断言) 企业级、SaaS、跨组织联邦 Okta、Azure AD、Salesforce
OIDC (OpenID Connect) JWT(ID Token) 移动端、单页应用、现代 Web Google、Auth0、Keycloak
CAS (Central Authentication Service) Ticket(ST/TGT) 高校、传统 Java 应用 Apereo CAS、Yale CAS