SSO单点登录系统详解(架构+方案+流程)

分布式是大型架构基石,下面我详解单点登录系统原理@mikechen

单点登录系统

单点登录(Single Sign-On, SSO),允许用户在一次身份验证,后访问多个受信任的应用系统而无需重复登录。

SSO单点登录系统详解(架构+方案+流程)-mikechen

这大大提升了用户体验,同时简化了身份管理,尤其适用于分布式系统、或多应用环境。

 

单点登录系统原理

单点登录其本质是:身份认证集中化(只在 SSO Server 做一次)。

认证结果可被多个业务系统信任与复用,关键不在“登录”,而在 “认证态的跨系统传递与校验”。

整体架构,如下图所示:

SSO单点登录系统详解(架构+方案+流程)-mikechen

┌──────────┐
│  Browser │
└────┬─────┘
     │
     ▼
┌────────────┐        ┌────────────────┐
│  Client A  │◄──────►│   SSO Server    │
│  Client B  │        │ (认证中心)      │
│  Client C  │        └────────────────┘
└────────────┘

1️⃣ CAS Server(认证中心)

唯一负责“身份认证”的系统。

核心职责:

用户名 / 密码校验;

维护全局登录态(TGT);

签发服务票据(ST);

统一登出协调中心。

2️⃣ CAS Client(业务系统)

不做登录,只做“票据校验”。

核心职责:

拦截未登录请求;

重定向用户到 CAS Server;

3️⃣ 浏览器(Browser)

票据和跳转的载体,核心职责:

保存 Cookie(TGC);

负责 302 重定向;

在系统之间传递 Ticket。

 

单点登录系统流程

整体流程,如下:

SSO单点登录系统详解(架构+方案+流程)-mikechen

首先,访问受限资源。

用户通过浏览器访问 Client A,Client A 发现用户没登录(无 Local Session)。

重定向至 Server:Client A 返回 302,让浏览器跳转到 CAS Server。

身份认证:CAS Server 检查发现浏览器没有 TGC(Cookie),于是弹出登录页面。用户输入账号密码。

发放票据 (ST):Server 生成一个临时票据 ST (Service Ticket)。

票据校验:Client A 拿到 ST 后,在后台(不经过浏览器)向 CAS Server 发起校验请求。

返回结果:Server 确认 ST 合法,返回用户信息。

Client A 为用户创建局部 Session,登录完成。

mikechen睿哥

10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法