1、术语解释
· TGT(Ticket Grangting Ticket)
TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后,CAS生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的cookie,则CAS以此cookie值为key查询缓存中有无TGT ,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。
· TGC(Ticket-granting cookie):
存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证。
· ST(Service Ticket)
ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含cookie,则CAS会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。
现有web工程test、单点工程cas
2.流程解析
当访问test时候,test发现这个请求没有带TGC过来,这表明之前没有在cas端身份认证过,那么被重定向到cas 端进行身份认证。
当用户登录成功,cas生成(cookie)TGC,并且生成对象TGT(id为TGC),并用TGT签约生成一个ST,放入自己的缓存。如果test再次发送请求,test发现发送的请求带有有TGC,cas就通过此TGC获取TGT,若从缓存中查询到有TGT,且有效,则说明之前登录了,分发ST(CAS为用户签发的访问某一service的票据)