单点登录是大型架构必备,下面我详解单点登录核心@mikechen
单点登录
单点登录(Single Sign-On,简称 SSO),是一种身份认证过程,允许用户在多个相互独立的软件系统中。
只需登录一次,就可以访问所有相互信任的应用系统。
比如:你有淘宝、天猫、支付宝、钉钉等多个阿里系产品。

传统方式:你需要为每个App/网站单独登录一次,非常麻烦。
SSO 方式:你在任意一个产品(如淘宝)登录成功后。
访问天猫、支付宝、钉钉时自动就已经登录,无需再次输入密码。
一句话总结:一次登录,处处通行。
单点登录架构
一个标准 SSO 架构,通常包含以下角色:

┌────────────┐
│ Browser │
└─────┬──────┘
│
未登录访问系统A
│
┌─────▼──────┐
│ System A │ CAS Client
└─────┬──────┘
│ Redirect
┌─────▼──────┐
│ CAS Server │ 认证中心
└─────┬──────┘
│
┌─────▼──────┐
│ System B │ CAS Client
└────────────┘
CAS服务器(Authentication Server)
核心认证模块:处理用户名/密码、二次校验(如OTP、短信、MFA)。
票据管理:生成、保存、失效票据(TGT、ST)。
协议支持:CAS协议(v1/v2/v3)、SAML、OAuth2/OpenID Connect(部分实现兼容)。
单点登出协调:维护会话关联并向客户端发送登出通知。
服务提供方(Service Providers / Clients)
重定向逻辑:在未登录时重定向到CAS登录页。
票据验证器:调用CAS验证接口以换取用户信息或断言(Assertion)。
本地会话管理:根据验证结果建立本地会话和权限映射。
浏览器:
在不同业务域名之间跳转,但通过 CAS Server 的 Cookie 保持统一登录态。
辅助组件
反向代理/负载均衡:实现高可用与流量分发。
日志与审计:记录认证事件与异常。
缓存与会话存储:提高性能(如Redis存储票据或会话映射)。
MFA/SSO扩展服务:增强安全性与兼容性。
单点登录流程
证流程分为前台跳转和后台验证两部分:

访问应用 A:用户尝试访问 appA.com,应用 A 发现本地没有 Session,拦截请求。
重定向至 CAS:应用 A 将浏览器重定向到 cas.com/login?service=appA.com。
用户登录:用户在 CAS 登录页输入账号密码。
创建凭证:CAS Server 验证成功后,在服务器生成 TGT。
携带 ST 回跳:CAS 生成一个随机的 ST,重定向回 appA.com?ticket=ST-xxxx。
后台验证 ST:应用 A 拿到 ST 后,在后台(Server-to-Server)请求 CAS Server 验证该 ST 是否合法。
建立局部会话:验证通过,应用 A 创建自己的局部 Session,用户访问成功。
mikechen睿哥
10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。