CAS提供可扩展的ticket过期策略,支持ticket-granting tickets (TGT)和service tickets (ST)的配置。

CAS客户端存储用户信息一般使用session,因此客户端用户登录过期时间应该还取决于客户端session的过期时间。

一、TGT的过期策略

1、TimeoutExpirationPolicy

CAS默认使用该策略作为TGT的过期策略,该策略与session的过期策略类似,超过设定的时间需要用户重新登录获取认证票据。

该策略支持参数

  • timeToKillInMilliSeconds:最大空闲时间(用户处于不活动状态),以毫秒为单位

配置示例,设置过期时间为2小时:

  1. <bean id="grantingTicketExpirationPolicy"
  2. class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
  3. <constructor-arg
  4. index="0"
  5. value="7200000" />
  6. </bean>

2、HardTimeoutExpirationPolicy

该策略设置认证票据的有效时间段,无论用户是否处于不活动状态,认证票据都会过期。

该策略支持参数

  • timeToKillInMilliSeconds:最大空闲时间(用户处于不活动状态),以毫秒为单位

配置示例,设置过期时间为2小时:

  1. <bean id="grantingTicketExpirationPolicy"
  2. class="org.jasig.cas.ticket.support.HardTimeoutExpirationPolicy">
  3. <constructor-arg
  4. index="0"
  5. value="7200000" />
  6. </bean>

3、ThrottledUseAndTimeoutExpirationPolicy

该策略集成自TimeoutExpirationPolicy,可以配置每个票据每隔一段时间要被使用一次。可以防止恶意攻击和误配置引发的瞬时大量ST票据请求导致CAS服务器崩溃。

该策略支持参数

  • timeToKillInMilliSeconds:最大空闲时间(用户处于不活动状态),以毫秒为单位
  • timeInBetweenUsesInMilliSeconds:连续使用票据的最小时间,以毫秒为单位

配置示例,设置过期时间为3小时,连续使用票据的最小时间设置为5秒:

  1. <bean id="grantingTicketExpirationPolicy"
  2. class="org.jasig.cas.ticket.support.ThrottledUseAndTimeoutExpirationPolicy"
  3. p:timeToKillInMilliSeconds="10800000"
  4. p:timeInBetweenUsesInMilliSeconds="5000"
  5. />

4、NeverExpiresExpirationPolicy

认证票据永不过期。配置示例如下:

  1. <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.NeverExpiresExpirationPolicy" />

5、RememberMeDelegatingExpirationPolicy

登录时可以设置记住用户,用户下次访问CAS时不需要再次登录。该策略在CAS 3.2.1之后的版本才支持,需要配置如下:

1)AuthenticationManager需要增加AuthenticationMetaDataPopulator的配置

  1. <property name="authenticationMetaDataPopulators">
  2. <list>
  3. <bean class="org.jasig.cas.authentication.principal.RememberMeAuthenticationMetaDataPopulator" />
  4. </list>
  5. </property>

2)修改登录流程

login-webflow.xml

定位credentials var节点,原始配置如下:

  1. <var name="credentials" class="org.jasig.cas.authentication.principal.UsernamePasswordCredentials" />

将其修改为:

  1. <var name="credentials" class="org.jasig.cas.authentication.principal.RememberMeUsernamePasswordCredentials" />

定位viewLoginForm bean,原始配置可能是:

  1. <view-state id="viewLoginForm" view="casLoginView" model="credentials">
  2. <binder>
  3. <binding property="username" />
  4. <binding property="password" />
  5. </binder>
  6. <on-entry>
  7. <set name="viewScope.commandName" value="'credentials'" />
  8. </on-entry>
  9. <transition on="submit" bind="true" validate="true" to="realSubmit">
  10. <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
  11. </transition>
  12. </view-state>

修改为:

  1. <view-state id="viewLoginForm" view="casLoginView" model="credentials">
  2. <binder>
  3. <binding property="username" />
  4. <binding property="password" />
  5. <binding property="rememberMe" />
  6. </binder>
  7. <on-entry>
  8. <set name="viewScope.commandName" value="'credentials'" />
  9. </on-entry>
  10. <transition on="submit" bind="true" validate="true" to="realSubmit">
  11. <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
  12. </transition>
  13. </view-state>

3)修改ticket过期策略

ticketExpirationPolicies.xml

  1. <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.RememberMeDelegatingExpirationPolicy">
  2. <property name="sessionExpirationPolicy">
  3. <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
  4. <constructor-arg index="0" value="XXXXXXXX" />
  5. </bean>
  6. </property>
  7. <property name="rememberMeExpirationPolicy">
  8. <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
  9. <constructor-arg index="0" value="XXXXXXXX" />
  10. </bean>
  11. </property>
  12. </bean>

二、ST的过期策略

MultiTimeUseOrTimeoutExpirationPolicy:默认策略,可以设置用户空闲时间最大值或票证使用次数最大值。

该策略支持参数

  • numberOfUses:票证最大使用次数,超过此次数,ST将过期
  • timeToKillInMilliSeconds:最大空闲时间(用户处于不活动状态),以毫秒为单位

配置示例,设置过期时间为5分钟,票据只允许使用一次:

  1. <bean id="serviceTicketExpirationPolicy"
  2. class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy">
  3. <constructor-arg
  4. index="0"
  5. value="1" />
  6. <constructor-arg
  7. index="1"
  8. value="300000" />
  9. </bean>

CAS ticket过期策略的更多相关文章

  1. 单点登录cas常见问题(十四) - ST和TGT的过期策略是什么?

    ST和TGT的过期策略能够參看配置文件:ticketExpirationPolicies.xml 1.先说ST:ST的过期包含使用次数和时间,默认使用一次就过期,或者即使没有使用.一段时间后也要过期 ...

  2. redis过期策略、内存淘汰策略、持久化方式、主从复制

    原文链接:https://blog.csdn.net/a745233700/article/details/85413179 一.Redis的过期策略以及内存淘汰策略:1.过期策略:定期删除+惰性删除 ...

  3. 详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)

    在学操作系统的时候,就会接触到缓存调度算法,缓存页面调度算法:先分配一定的页面空间,使用页面的时候首先去查询空间是否有该页面的缓存,如果有的话直接拿出来,如果没有的话先查询,如果页面空间没有满的时候, ...

  4. redis 的过期策略都有哪些?内存淘汰机制都有哪些?

    面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 r ...

  5. redis的过期策略都有哪些?

    1.面试题 redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现? 2.面试官心里分析 1)老师啊,我往redis里写的数据怎么没了? 之前有同学问过我,说我们生产环境的redi ...

  6. Redis过期策略

    一.设置过期时间 expire key time(以秒为单位) -- 这是最常用的方式 setex(String key, int seconds, String value) -- 字符串独有的方式 ...

  7. Redis数据过期策略详解

    http://www.cnblogs.com/xuliangxing/p/7151812.html 本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用 ...

  8. Redis的过期策略和内存淘汰策略(转)

    Redis的过期策略 我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间.Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理. ...

  9. Redis的过期策略和内存淘汰策略

    Redis的过期策略:通常有三种,Redis中同时使用惰性过期和定期过期两种过期策略组合. 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除.该策略可以立即清除过期的数据 ...

随机推荐

  1. 搭建openvpn 未完成。。。

    轻松构建自己的OpenVPN家庭服务器(VMware+Amahi) http://os.51cto.com/art/201107/277146_all.htm  这是教程 不用安装第一步的,直接把下载 ...

  2. SIEBEL应用概述

    Siebel CRM是围绕客户关系管理这个主题建立起来的一系列应用的总和,和一些国内公司的CRM/CALL CENTER产品不一样,Siebel应用远远不是只是接一些电话然后记录下来并进行处理这么简单 ...

  3. MongoDB学习笔记——聚合操作之MapReduce

    MapReduce MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,value) ...

  4. Showing progress bar in a status bar pane

    在工具卡显示进度条,原文链接:http://www.codeproject.com/Articles/35/Showing-progress-bar-in-a-status-bar-pane 1.构造 ...

  5. 开启mysql慢查询

    Linux查看mysql 安装路径一.查看文件安装路径由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址).这里以mysql为例.比如说我安装了mysql,但是不知道文件都安装在哪些 ...

  6. Lua面向对象编程

    Lua中的table就是一种对象,看以下一段简单的代码: , b = } , b = } local tb3 = tb1 if tb1 == tb2 then print("tb1 == t ...

  7. AngularJS跨域请求

    本文主要针对网上各种跨域请求的总结,并加入自己的验证判断,实现工作中遇到的跨域问题.所涉及到的领域很小,仅仅局限于:AngularJS CORS post 并同时需要实现json数据传送给服务器. 首 ...

  8. [转]jQuery Popup Login and Contact Form

    本文转自:http://www.formget.com/jquery-popup-form/ Pop up forms are the smart way to present your site. ...

  9. Hog SVM 车辆 行人检测

    HOG SVM 车辆检测 近期需要对卡口车辆的车脸进行检测,首先选用一个常规的检测方法即是hog特征与SVM,Hog特征是由dalal在2005年提出的用于道路中行人检测的方法,并且取的了不错的识别效 ...

  10. Verilog (二) multiplexer and decoder

    1  mutiplexer 数据选择器 1)  one-bit wide 2-1 mux wire dout = sel? din1 : din0; // conditional continuous ...