本帖最后由 Men_chou 于 2022-9-29 09:04 编辑
CAS(Central Authentication Service)是耶鲁大学的一个开源项目,旨在为web应用系统提供一种可靠的单点登录解决方案。 CAS包含两个角色:CAS Server和CAS Client。 CAS Server负责完毕对用户的认证工作,会为用户签发两个重要的票据:登录票据(TGT)和服务票据(ST)来实现认证过程,CAS Server须要独立部署。 CAS Client负责处理对客户端受保护资源的访问请求,如果判断需要进行用户登陆,就会重定向到CAS Server进行认证。CAS Client与受保护的客户端应用部署在一起,以 Filter方式保护受保护的资源。
二、CAS术语解释 1、TGT Ticket Grangting Ticket:TGT是CAS Server为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS Server成功登录过。 TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS Server认证成功后,CAS Server生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当http再次请求到来时,如果传过来的有CAS Server生成的cookie,则CAS Server以此cookie值为key查询缓存中有无TGT,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。
2、TGC Ticket Granting Cookie:存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来识别用户身份的凭证。
3、ST Service Ticket:服务票据,ST是CAS Server为用户签发的访问某一service的票据。 用户访问service时,service发现用户没有ST,则要求用户去CAS Server获取ST。用户向CAS Server发出获取ST的请求,如果用户的请求中包含cookie,则CAS Server会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS Server验证,验证通过后,允许用户访问资源。 4、Session 会话:服务器为了保存用户状态而创建的一个特殊的对象。 全局会话:用户浏览器到CAS Server登录后,用户浏览器和CAS Server之间建立起了会话,我们把这个会话称为全局会话。 局部会话:用户浏览器和系统应用建立起局部会话,局部会话保持了客户端与该系统应用的登录状态,局部会话依附于全局会话存在,全局会话消失,局部会话必须消失。 用户访问应用时,首先判断局部会话是否存在,如存在,即认为是登录状态,无需再到CAS Server去判断。如不存在,就重定向到CAS Server判断全局会话是否存在,如存在,CAS Server会通知该应用,该应用与客户端就建立起它们之间局部会话,下次请求该应用,就不去CAS Server验证了。 三、CAS单点登陆流程 CAS单点流程如下图所示,主要分为以下四个部分: • 首次登陆应用a(1-29) • 再次访问应用a下的图书馆资源(30-34) • 首次访问应用b(35-58) • 从应用b注销登陆(59-75)
四、后记 1、参考了很多网上的资料,没有研究的很深; 2、搭建的测试环境有点问题,只能抓到登陆的包,注销的数据包没有抓到; 3、有什么错误的地方,欢迎大佬指正,大家一起学习。 |