一、几个概念
TGT(Ticket Grant Ticket):是cas服务端为用户签发的登录票据,封装了cookie和用户信息,有TGT代表用户已经登录过。
TGC(Ticket Granting Cookie):可以理解成TGT的cookie,cookie的值就是TGT的ID。
ST(service Ticket):cas服务端签发的访问某个服务的票据,server用TGT去签发ST
二、基本原理
现有webClient1、webClient2访问CASServer,分析流程:
1、首先:请求webClient1
1)、请求webClient1的request被CASAuthencationFilter拦截,将该请求的url作为sevice参数,重定向至cas/login;
2)、CAS检测到请求中没有TGC,跳转至自己的登录界面;
3)、登录验证通过,CASServer生成TGT和ST,并将TGT的id写到浏览器(TGC),将ST做为参数,重定向至webClient1。
4)、此时webClient1的CASAthencationFilter会通过,此时被TicketVaildationFilter拦截,这个过滤器发送httpClient请求去验证ST的正确性,server验证通过,将用户信息写到wenClient1的session中。
现在SSO会话就建立起来了。
2、然后,再次访问webClient1,会直接去自己的session中拿取用户信息,不需要服务端验证。
3、浏览器未关闭情况下访问webClient2
1)、webClient2检测自己的session中没有用户信息,request被CASAuthencationFilter拦截,将该请求的url作为sevice参数,重定向至cas/login;
2)、此时请求中会有TGC,CASServer会根据TGC查找到TGT,然后用TGT去签发ST
接下来就是1.4中的步骤了。
网友评论