关于CAS的TGT和Service Ticket的过期策略

首先说明一下什么是cas:

cas是一套单点登录的框架,利用它可是实现登录一个账号就能访问多个相关系统的功能。它分为客户端Client和服务端Server,只要将开发单点登录的系统集成cas的客户端,然后部署好服务端,就可以实现多系统的单点登录。

下面说一下cas的认证流程:

1)用户访问cas-client,被拦截跳转到cas-server进行登录,输入正确的用户信息

2)登录成功后,cas-server签发一个TGC票据,写入浏览器同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值,并再次跳转到cas-client,同时携带着ST票据

cas-client发现有ST票据则拿着ST票据去cas-server验证,如果验证通过,则返回用户名信息

3)cas-client登录成功,用户访问另一个cas-client2时,也会被拦截再次跳转到cas-server发现TGC票据生成的TGT对象的ID值存在则直接验证通过,签发一个ST票据给cas-client2。


也就是说一旦TGT过期,所有的系统就都不能访问了,ST是针对每一个系统的。两者都是有默认的过期策略,都可以根据自己的需求设置自己的需要的过期策略。

# Default Expiration Policy
# tgt.maxTimeToLiveInSeconds=28800

# tgt.timeToKillInSeconds=7200

上面是cas.properties中的默认过期策略, tgt.maxTimeToLiveInSeconds指的是TGT的最大生存时间,28800秒,也就是八小时; tgt.timeToKillInSeconds是指在用户没有对系统进行任何操作的情况下,7200秒之后,也就是两个小时之后TGT会过期。过期之后需要重新登录操作。

# Service Ticket Timeout
#st.timeToKillInSeconds=10
# st.numberOfUses=1

上面是ST的默认过期策略,st.timeToKillInSeconds=10说明当你访问一个应用系统时,cas server签发了一张票据,你需要在十秒钟之内拿着这种ST去server进行校验,过了10秒钟就过期了,系统也就访问不了;st.numberOfUses=1指的是ST可以用几次才过期,默认是用过一次就过期。

在cas.properties中,还有一个过期策略

# Inactivity Timeout Policy

#tgt.timeout.maxTimeToLiveInSeconds=28800

默认的时间是八小时,本人不是很懂,还没有研究出它的作用,希望各位大佬多多指教。










你可能感兴趣的:(cas单点登录)