chat

详细展开介绍一下 SSO

在有了 UMS(用户管理系统) 作为统一用户基础之后,下一步自然就是构建 SSO(Single Sign-On,单点登录系统) —— 企业身份体系的“统一认证层”。

这一层是企业内部 所有系统的入口,也是从“多个独立系统”走向“统一身份中台”的关键步骤。

下面我来系统、深入地讲清楚 SSO 的原理、架构、关键模块、协议设计、Token 策略、以及和 UMS/Passport 的关系。


🧩 一、SSO 是什么?(定义与目标)

SSO(Single Sign-On,单点登录) 的核心目标是:

用户在企业任意一个系统中登录一次后,便可以无缝访问公司内其他系统,而无需重复输入用户名和密码。

✅ 简单理解

  • 没有 SSO:每个系统都要登录一次。
  • 有了 SSO:登录一次,全网通行。

🧭 二、SSO 的核心价值

价值方向 说明
💡 用户体验 只需登录一次,不重复输入密码
🔒 安全合规 统一身份认证,集中风控、审计、登出
⚙️ 架构统一 各系统通过统一认证标准接入
🧰 可扩展性 支持接入外部系统、第三方身份
🧠 管理效率 集中管理会话、Token、用户状态

🧠 三、SSO 的核心思路(原理)

我们从“流程”层面先看:

🧾 单点登录流程(基础版)

  1. 用户访问子系统 A(如 OA)
  2. 系统 A 发现用户未登录 → 跳转到 SSO 登录页
  3. 用户在 SSO 登录页输入账号密码
  4. SSO 认证成功,生成 Token / Ticket 并写入 Cookie(绑定 SSO 域)
  5. SSO 重定向回系统 A,并携带授权票据(如 codeticket
  6. 系统 A 调用 SSO 的验证接口 /validate,验证成功后建立本地会话
  7. 后续访问系统 B 时,B 发现同域 Cookie 中已有登录状态 → 直接放行(或用 Token 免密登录)

✅ 效果:登录一次,全系统共享登录态。


🧩 四、SSO 的核心组成模块

一个完整的 SSO 系统通常由以下几个部分组成👇:


1️⃣ 认证中心(Auth Server)

功能:负责统一的登录、注册、密码找回、Token 签发。

功能点 说明
登录页(/login) 用户登录入口
登出接口(/logout) 注销全局登录状态
授权码签发(/authorize) OAuth2 标准接口
Token 签发(/token) Access Token、ID Token、Refresh Token
用户信息接口(/userinfo) 获取当前登录用户信息
统一会话管理 用户登录状态统一缓存(Redis / DB)

⚙️ 可直接复用:Spring Authorization Server / Keycloak / Auth0。


2️⃣ 应用系统(Client / Service Provider)

功能:依赖 SSO 的系统(如 CRM、OA、Wiki、BI)。

关键点 说明
注册为 SSO 客户端(client_id + secret)  
登录时重定向到 SSO 登录页  
登录后通过 code → token 完成授权  
本地维护短期 Session  
可通过 SDK 验证用户 Token  

3️⃣ Token 管理模块

负责登录凭证的生成、刷新与验证。

类型 说明
Access Token 短期访问凭证(通常有效期15~60分钟)
Refresh Token 用于刷新 Access Token
ID Token (OpenID Connect)包含用户身份声明
Session Token / Ticket Web 场景下绑定 Cookie 的会话凭证

⚙️ 建议:

  • 后端系统用 JWT(无状态)
  • 前端 Web 登录用 Session Ticket(可统一登出)

4️⃣ 单点登出(Single Logout)

SSO 的另一个关键特性:退出一个系统,所有系统都退出。

实现方式:

方式 说明
前端方式 各系统的 iframe 监听登出事件
后端方式 SSO 服务主动调用各系统的 /logout 接口
混合方式 前后端联动触发注销

✅ 推荐:后端回调方式更安全可靠。


5️⃣ 会话与安全控制模块

功能 说明
会话持久化 用户登录状态记录(session_id、client_id、expires)
黑名单机制 被登出的 Token 加入黑名单
并发登录控制 限制多终端登录
审计日志 登录日志、设备、IP、时间、结果

⚙️ 五、SSO 常用协议与标准

协议 场景 说明
OAuth 2.0 授权协议 常用于应用间授权(API级)
OpenID Connect (OIDC) 基于 OAuth2 扩展的身份认证协议 企业 SSO 主流
SAML 2.0 XML 协议,常用于传统企业系统  
JWT (JSON Web Token) Token 格式 携带身份信息
LDAP / Kerberos 内网认证 老式企业系统常用

💡 推荐:现代企业统一采用 OpenID Connect + OAuth2.0 + JWT


🏗️ 六、SSO 的系统架构

              ┌────────────────────────────┐
              │         用户浏览器          │
              └─────────────┬──────────────┘
                            │
                            ▼
                 ┌────────────────────┐
                 │  SSO 认证中心(Auth Server) │
                 │  - 登录页 (/login)          │
                 │  - 授权码 (/authorize)      │
                 │  - Token (/token)           │
                 │  - 用户信息 (/userinfo)     │
                 │  - 登出 (/logout)           │
                 └───────────┬────────────────┘
                             │
      ┌──────────────────────┼────────────────────────┐
      ▼                      ▼                        ▼
┌────────────┐       ┌────────────┐          ┌────────────┐
│  系统A CRM │       │  系统B OA │          │  系统C BI │
│  (Client)  │       │  (Client) │          │  (Client)  │
└────────────┘       └────────────┘          └────────────┘

🔐 七、登录凭证设计(Token 策略)

1️⃣ Token 类型建议

类型 有效期 用途
Access Token 15-60 分钟 调接口凭证
Refresh Token 7-30 天 刷新 Access Token
ID Token 同 Access Token 携带用户信息
Session Cookie 浏览器短期登录态 Web 登录维持

2️⃣ 签发与验证逻辑

  • 签发: SSO Auth Server 生成 JWT,签名(RSA / HMAC)。
  • 验证: 各系统通过 SDK 校验 JWT 签名(公钥验证)。
  • 刷新: Access Token 过期 → 用 Refresh Token 获取新 Token。
  • 撤销: 强制登出时,加入 Token 黑名单。

🧰 八、技术实现选型

模块 推荐技术栈
认证服务端 Spring Authorization Server / Keycloak / OAuth2 Proxy
Token 存储 Redis / DB(短期票据)
JWT 签名 RSA 非对称加密
登录 UI Vue / React 独立登录页(统一风格)
客户端集成 OAuth2 Client SDK / Spring Security OAuth Client
日志审计 ELK / Loki / Kafka Sink

🧱 九、与 UMS、Passport 的关系

层级 职责 举例
UMS 用户主数据管理 用户、部门、岗位
SSO 统一认证(登录) 登录页、Token、单点登出
Passport 统一授权(权限) 角色、资源、策略
IAM Gateway 统一鉴权入口 API 层安全控制

✅ 简单理解:

  • UMS:谁(用户)
  • SSO:谁登录了
  • Passport:能干什么
  • IAM Gateway:在什么场景下允许做什么

🧩 十、SSO 实践中的关键设计要点

设计点 建议
跨域问题 统一二级域名(如 *.corp.com)可共享 Cookie
安全性 Token 加签、CSRF 防护、登录失败限制
多端支持 Web / App / API 一致认证
登录日志审计 记录 IP、设备、系统来源
企业门户整合 登录后跳转统一 Portal 展示所有系统入口
第三方接入 对接钉钉、飞书、企业微信登录
零信任演进 将 SSO 与风控系统结合,基于风险动态验证

🚀 十一、典型架构落地路线

阶段 目标 关键成果
1️⃣ 基础 SSO 实现 用户统一登录、登出、Token 机制
2️⃣ OAuth2 / OIDC 支持 各系统标准接入
3️⃣ 集成第三方身份源 LDAP / AD / 钉钉 / 飞书
4️⃣ 多租户支持 每个企业租户独立登录域
5️⃣ 风控与零信任 动态验证、MFA、地理限制
6️⃣ 与 Passport 打通 登录后自动同步角色与权限

✅ 十二、总结一句话

SSO = 企业的统一登录大脑 它连接了用户(UMS)和权限(Passport), 是企业身份体系从“分散登录”走向“统一安全”的中枢。


如果你想继续深入,我可以帮你:

  • 📘 绘制一张 完整的 SSO 流程图(OAuth2 / OIDC 版本)
  • 📦 生成一个 基于 Spring Authorization Server 的 SSO 示例工程
  • 🧩 或者设计 与 UMS/Passport 打通的统一认证架构图

你希望我接下来帮你展开哪一部分?(流程图 / 示例工程 / 架构整合)

参考资料