CAS学习笔记二:CAS单点登录流程

由于公司项目甲方众多,各甲方为了统一登录用户体系实现单点登录(SSO)开始要求各乙方项目对接其搭建的CAS单点登录服务,有段时间对CAS的流程很迷,各厂商还有基于CAS进行二次开发的情况,所以对它的官方文档进行了一定的学习,记录下来帮助有需要的同学。

由于CAS的验签协议较多,此处将仅使用 验签 略过其子流程,感兴趣的可以查看官方文档进行系统学习。

术语

此处将不介绍验签相关的术语,约等于CAS1

CAS (Central Authentication Service) - 中央认证服务器

SSO (Single Sign On) - 单点登录

CAS Client - 集成CAS登录流程的应用服务

TGT (ticket-granting tickets) - 存在 CAS 服务端的用户票据,可使用此票据颁发ST

TGC - 存在浏览器的 Cookie,对应 CAS 服务端的 TGT

ST - 服务票据,CAS为每个登录成功的应用服务生成唯一票据,对应应用服务的服务名(serverName)

CAS单点登录流程

CAS学习笔记二:CAS单点登录流程

单点登录流程:

用户通过浏览器请求服务A资源

服务A校验发现此请求未认证,重定向浏览器到CAS服务端登录地址

用户通过浏览器输入用户名密码,发起登录请求

CAS服务端校验用户名密码通过,响应头会将TGC写入浏览器CAS域名的Cookie中,重定向浏览器到 服务A地址 + 服务A的ST

服务A向CAS服务端发起校验ST请求,验证通过后服务A重定向请求到服务A未携带ST的地址,业务响应返回结果

用户通过浏览器请求服务B的资源

服务B发现此请求未认证,重定向浏览器到CAS服务端登录地址,由于CAS地址的Cookie有TGC,重定向时会被携带传递给CAS服务端

CAS服务端校验TGC发现有对应的TGT,颁发ST给服务B,重定向浏览器到 服务B + 服务B的ST

服务B向CAS服务端发起校验ST请求,验证通过后服务B重定向请求到服务A未携带ST的地址,业务响应返回结果

总结

用户登录成功会创建TGT,由TGT颁发ST。

用户浏览器端会保存TGC,它对应一个TGT

浏览器端存在未过期的TGC,访问CAS服务端时携带TGC,CAS使用TGT颁发ST,实现单点登录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzffzf.html