分布式是大型架构核心,下面我详解SSO单点登录原理@mikechen
单点登录
单点登录(Single Sign-On,简称SSO)是一种认证机制,旨在用户只需一次登录便可访问多个相互信任的应用系统。
SSO通过集中式认证与信任建立,简化用户体验、提升安全性并降低运维成本。

很多大型互联网公司都会使用 SSO,例如 :阿里巴巴集团 的内部系统、以及基于 OAuth 2.0 或 OpenID Connect 的登录体系。
SSO单点登录原理
典型实现,通常包含三个核心组件:CAS Server、CAS Client 和浏览器。

三者协同完成认证、授权与会话传递。
CAS Server
CAS(Central Authentication Service)Server 作为集中式认证中心,负责验证用户身份并颁发可被信任的令牌或票据(Ticket)。
当用户首次访问受保护资源且未经过身份验证时,CAS Server 要求用户提供凭证(如用户名与密码)。
完成验证后生成一次性或短期有效的认证票据,同时在服务端建立该用户的单点登录会话。
CAS Client
CAS Client 部署在各受保护的应用或服务端,负责与 CAS Server 协同实现登录流程。
其主要职责包括:检测用户访问是否具备登录态;
在无登录态时将用户重定向至 CAS Server 进行认证;
接收 CAS Server 返回的票据并向 CAS Server 发起票据校验以获取用户身份;
在校验通过后,为本地应用建立会话或映射用户信息。
浏览器
浏览器作为用户端的中介,承担重定向和票据传递的角色。
典型流程为:用户在浏览器中访问某一 CAS Client 托管的应用。
若无本地会话,CAS Client 将浏览器,重定向到 CAS Server 的认证页面。
用户在浏览器上完成认证后,CAS Server 通过浏览器将认证票据。
通常作为 URL 参数或 Cookie,回传给原始 CAS Client。
单点登录流程
完整流程,如下:

用户访问系统A
│
▼
系统A发现未登录
│
▼
跳转 CAS Server
│
▼
用户登录
│
▼
CAS Server生成 TGC
│
▼
返回 Service Ticket
│
▼
系统A验证 Ticket
│
▼
用户成功登录
│
▼
访问系统B
│
CAS检测已登录
│
直接签发 Ticket
│
▼
用户直接访问系统B