1. SSO 基础概念:什么是单点登录、核心价值与传统登录的区别
1.1 什么是单点登录
单点登录(Single Sign-On,简称 SSO)是一种身份认证机制,允许用户使用一组凭证(如用户名/密码)登录一次,即可访问多个相互信任的应用系统,而无需在每个系统中重复输入凭证。
核心定义:SSO 在多个服务之间建立统一的认证中心,用户只需完成一次全局认证,后续访问所有关联应用时,认证中心自动验证用户身份,无需再次登录。
SSO 的典型工作流程包含三个角色:
- 用户(User): 持有全局凭证的终端使用者。
- 认证中心(Auth Center / IDP): 负责验证用户身份、颁发全局票据(Token / Ticket)的中心服务。
- 应用服务(SP - Service Provider): 依赖认证中心验证用户身份的业务系统,本身不存储用户密码。
1.2 SSO 的核心价值
SSO 并非单纯为了减少登录次数,它在企业级架构中带来以下关键收益:
| 价值维度 | 具体收益 | 典型场景 |
|---|---|---|
| 用户体验提升 | 用户只需记住一组密码,跨系统切换无需重复认证 | 企业内网门户、SaaS 套件 |
| 安全管控集中 | 认证策略、密码策略、多因子认证(MFA)在认证中心统一管理 | 金融、政务等高安全环境 |
| 运维成本降低 | 各应用无需自建用户认证模块,减少重复开发和维护 | 微服务架构、多系统集成 |
| 审计与合规 | 所有登录行为集中在认证中心记录,便于审计追踪 | GDPR、SOX 合规要求 |
| 减少密码疲劳 | 降低用户因记忆多套密码而使用弱密码或重复密码的风险 | 员工账号管理、教育平台 |
架构视角:SSO 将认证逻辑从业务应用中抽离,形成独立的认证基础设施。这种解耦使得认证策略的变更(如引入生物识别)不会影响业务代码,是分布式系统架构中"关注点分离"原则的典型实践。
1.3 SSO 与传统登录的区别
传统登录模式下,每个应用系统独立管理用户凭证和会话;SSO 模式下,认证与授权分离,会话由认证中心统一维护。两者的核心差异如下:
| 对比维度 | 传统登录 | SSO 单点登录 |
|---|---|---|
| 凭证存储 | 每个应用各自存储用户密码/凭证 | 凭证集中存储在认证中心 |
| 登录次数 | 每个应用需独立登录 | 一次登录,全局通行 |
| 会话管理 | 各应用维护自己的 Session | 认证中心维护全局 Session,应用通过 Token 验证 |
| 登出操作 | 需在每个应用单独登出 | 单点登出(SLO),一次登出退出所有系统 |
| 安全风险 | 密码泄露面广,每个系统都可能成为攻击入口 | 攻击面集中在认证中心,可集中部署防护措施 |
| 实现复杂度 | 简单,各系统独立实现 | 需要统一协议(如 SAML、OIDC、CAS)和信任关系 |
| 扩展性 | 新增系统需重新开发认证模块 | 新增系统只需对接认证中心,快速接入 |
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 |