单点登录 (Single Sign On),英文名称缩写 SSO,意思是在多系统的环境中,登录单方系统,就可以无须再次登录,访问相关受信任的系统。也就是说,只要登录一次单体系统即可。
Authing CAS 是 SSO 解决方案的一种具体实现方式,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录,并且支持多种认证机制、安全策略、支持授权以及提供高可用性的方式,不需要客户关注于如何实现 CAS Server、配置 HTTPS 以及提供个性化的登录、登出的页面等等。Authing 简化配置流程,为用户提供一站式应用集成,用户只要在平台自行配置各种需要的方式即可。
什么是 CAS
CAS 框架:CAS(Central Authentication Service,即:统一认证服务)是实现 SSO 单点登录的框架。
什么是单点登录
单点登录:Single Sign On,简称 SSO,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS 术语
Ticket Granting Ticket (TGT) :可以认为是 CAS Server 根据用户名密码生成的一张票,存在 Server 端。
Ticket Granting Cookie (TGC) :其实就是一个 Cookie,存放用户身份信息,由 Server 发给 Client 端。
Service Ticket (ST) :由 TGT 生成的一次性票据,用于验证,只能用一次。相当于 Server 发给 Client 一张票,然后 Client 拿着这个票再来找 Server 验证,看看是否由 Server 签发。
CAS 协议流程图
用户首次访问系统 A
用户浏览器访问系统 A 中受限资源,此时系统 A 进行登录检查,发现未登录,然后系统 A 检查访问的 URL 中是否带有令牌(ST),发现没有令牌(因为是首次登录)。
系统 A 将用户请求重新定向到认证中心(CAS Server),认证中心进行获取全局票据(TGT)操作,没有(因为是首次登录),所以用户需要进行登录操作(输入用户名和密码)。
认证中心呈现登录页面,用户登录,登录成功后,认证中心给用户浏览器设置 Cookie(TGC),然后认证中心重新定向请求到系统 A,并附上认证通过令牌(ST),此时认证中心同时生成了全局票据(TGT)。
此时再次进行登录检查,发现未登录,然后再次获取令牌操作,就可以获得令牌(ST)。系统 A 拿着令牌和请求 URL 与认证中心通信,验证令牌有效,认证中心返回成功,证明用户已登录。
系统 A 生成相应的 session(用于下次用户访问时验证),然后将受限资源返给用户。
已登录用户首次访问系统 B
浏览器访问另一系统 B 需登录受限资源,此时进行登录检查(session 检查),发现未登录,然后系统 B 检查访问的 URL 中是否带有令牌(ST),发现没有令牌。
系统 B 将请求重新定向到认证中心,认证中心进行获取全局票据(TGT)操作,可以获得(因为之前已经登录过)。
认证中心发放令牌(ST),并携带该令牌重新定向到系统 B。
系统 B 再次进行登录检查,发现未登录,然后再次获取令牌操作,此时可以获得令牌(ST),系统 B 拿着令牌和请求 URL 与认证中心通信,验证令牌有效,认证中心返回成功,证明用户已登录。
系统 B 生成相应的 session(用于下次用户访问时验证),然后将受限资源返回给用户。
用户登出
用户向系统 A 发起登出请求动作,系统 A 清除本地 session,同时清除用户浏览器中相应的 cookie。
系统 A 将用户请求重定向到认证中心的登出接口,认证中心根据获取到的票据(TGT)清除本地 session,同时清除用户浏览器中相应的 cookie(TGC)。
认证中心把用户请求重新定向回系统 A,这时由于系统 A 中已经没有了 session,所以请求会被重新定向到认证中心的登录页面。至此,用户已经完全退出系统了。
说明
关于 Spring Security 的相关知识点,请参考 《Spring Security 集成 Authing OIDC 认证(一)》一文。
点击此处了解更多行业身份管理
「解决方案」以及「最佳实践案例」。