单点登录是大型架构的必备技能,下面我就重点来详解单点登录@mikechen
单点登录
单点登录(Single Sign-On, SSO)是现代企业应用和互联网服务的基石,它极大提升了用户体验。

只需登录一次,即可无缝访问多个相互信任的应用系统,无需重复输入凭据。
SSO的本质是:跨系统共享认证信息,核心在于登录凭证的可信传递、和验证机制。
单点登录技术
SSO(单点登录)的核心,是一个身份验证和授权的协作机制。
其核心思想是:将用户的认证操作集中到一个独立的认证中心,由认证中心负责用户身份验证。
并将认证结果传递给各个子系统,从而实现一次登录,全站通行。
整体实现架构,如下图所示:

包含如下核心组件:
| 角色 | 核心职责 |
|---|---|
| CAS Server | 用户身份认证、生成与验证 TGT/ST、统一登录登出 |
| CAS Client | 拦截未登录请求、重定向认证、校验 ST、建立本地会话 |
| User Agent | 发起请求、自动携带 TGT Cookie、重定向流转 |
CAS Server (认证中心/IdP)
唯一的认证服务器,负责用户身份验证、TGT 和 ST 的生成、管理及验证。
它通常拥有一个统一的登录页面。
CAS Client (客户端/SP)
集成 CAS 认证协议的各个应用系统,负责将未认证的请求重定向到 CAS Server,并验证 CAS Server 返回的 ST。
User Agent (用户代理)
用户的浏览器。
整体流程,如下所示:
[浏览器] ---> 请求业务系统A
|
v
[业务系统A] -- 未登录 --重定向--> [CAS Server登录页面]
|
v
[用户输入凭证] --校验成功--> [CAS Server生成 TGT & ST]
|
v
[浏览器] <--带ST回跳-- [CAS Server]
|
v
[业务系统A验证ST] --> [CAS Server]
|
v
[业务系统A建立本地Session,用户登录成功]
-
用户访问业务系统A,系统发现未登录,重定向到CAS认证中心登录页(带上业务系统地址)。
-
用户在CAS中心登录成功,CAS生成TGT(存Cookie)和ST(服务票据)。
-
CAS带ST重定向回业务系统A。
-
业务系统A用ST去CAS验证票据,验证成功后建立本地登录状态。
-
用户访问其他业务系统,重复步骤1-4,但因已有TGT,无需再次登录,直接签发ST。
这样实现了一次登录,多系统免登录的单点登录体验。