• CAS ticket过期策略


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

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

    一、TGT的过期策略

    1、TimeoutExpirationPolicy

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

    该策略支持参数

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

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

    <bean id="grantingTicketExpirationPolicy"
        class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
        <constructor-arg
            index="0"
            value="7200000" />
    </bean>

    2、HardTimeoutExpirationPolicy

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

    该策略支持参数

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

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

    <bean id="grantingTicketExpirationPolicy"
        class="org.jasig.cas.ticket.support.HardTimeoutExpirationPolicy">
        <constructor-arg
            index="0"
            value="7200000" />
    </bean>

    3、ThrottledUseAndTimeoutExpirationPolicy

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

    该策略支持参数

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

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

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

    4、NeverExpiresExpirationPolicy

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

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

    5、RememberMeDelegatingExpirationPolicy

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

    1)AuthenticationManager需要增加AuthenticationMetaDataPopulator的配置

    <property name="authenticationMetaDataPopulators">
        <list>
            <bean class="org.jasig.cas.authentication.principal.RememberMeAuthenticationMetaDataPopulator" />
        </list>
    </property>

    2)修改登录流程

    login-webflow.xml

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

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

    将其修改为:

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

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

    <view-state id="viewLoginForm" view="casLoginView" model="credentials">
          <binder>
              <binding property="username" />
              <binding property="password" />
          </binder>
          <on-entry>
              <set name="viewScope.commandName" value="'credentials'" />
          </on-entry>
        <transition on="submit" bind="true" validate="true" to="realSubmit">
              <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
          </transition>
    </view-state>

    修改为:

    <view-state id="viewLoginForm" view="casLoginView" model="credentials">
        <binder>
            <binding property="username" />
            <binding property="password" />
            <binding property="rememberMe" />
        </binder>
        <on-entry>
            <set name="viewScope.commandName" value="'credentials'" />
        </on-entry>
        <transition on="submit" bind="true" validate="true" to="realSubmit">
            <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
        </transition>
    </view-state>

    3)修改ticket过期策略

    ticketExpirationPolicies.xml

    <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.RememberMeDelegatingExpirationPolicy">
       <property name="sessionExpirationPolicy">
        <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
               <constructor-arg index="0" value="XXXXXXXX" />
        </bean>
       </property>
       <property name="rememberMeExpirationPolicy">
        <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
               <constructor-arg index="0" value="XXXXXXXX" />
        </bean>
       </property>
    </bean>

    二、ST的过期策略

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

    该策略支持参数

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

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

    <bean id="serviceTicketExpirationPolicy"
        class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy">
        <constructor-arg
            index="0"
            value="1" />
        <constructor-arg
            index="1"
            value="300000" />
    </bean>

     

  • 相关阅读:
    前端页面实现报警器提示音效果
    Bootstrap相关优质项目学习清单
    Bootstrap相关优质项目学习清单
    [慕课笔记] node+mongodb建站攻略
    基础知识(11)- 异常、断言、日志和调试
    洛谷 P2580 于是他错误的点名开始了
    codevs 4189 字典
    HDU 1251 统计难题
    HDU 1827 Summer Holiday
    HDU 3836 Equivalent Sets
  • 原文地址:https://www.cnblogs.com/gao241/p/3367869.html
Copyright © 2020-2023  润新知