`
starbhhc
  • 浏览: 658128 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

第十一节 CAS服务端RememberMe

    博客分类:
  • java
 
阅读更多

 

关于启用RememberMe功能所需做的修改描述

 

 

  1. /** 
  2.  * @see CAS服务端RememberMe 
  3.  * @see ------------------------------------------------------------------------------------------------------------------------ 
  4.  * @see 关于RememberMe,可参考官方文档,网址如下(下面两个网址描述的RememberMe实现都是一样的,只是第二个还有其它描述) 
  5.  * @see http://jasig.github.io/cas/development/installation/Configuring-LongTerm-Authentication.html 
  6.  * @see http://jasig.github.io/cas/4.0.x/installation/Configuring-Authentication-Components.html#long-term-authentication 
  7.  * @see RememberMe也就是平时所说的记住密码的功能,可以让用户登录成功后,关闭浏览器再重新打开浏览器访问应用时不需要再次登录 
  8.  * @see RememberMe与上面的Session超时配置tgt.timeToKillInSeconds是两回事,Session超时是针对一次会话而言,RememberMe则更广 
  9.  * @see 另外本文的CAS-4.0.3服务端源码修改,是在我的以下三篇博文基础上修改的,最终我会在CSDN上提供整体源码下载 
  10.  * @see http://blog.csdn.net/jadyer/article/details/46875393 
  11.  * @see http://blog.csdn.net/jadyer/article/details/46914661 
  12.  * @see http://blog.csdn.net/jadyer/article/details/46916169 
  13.  * @see 具体修改步骤如下 
  14.  * @see 1.cas.properties中新增配置项rememberMeDuration=1209600 
  15.  * @see 2.ticketExpirationPolicies.xml中新增RememberMe过期策略的配置 
  16.  * @see 3.ticketGrantingTicketCookieGenerator.xml中新增属性项p:rememberMeMaxAge="${rememberMeDuration:1209600}" 
  17.  * @see 4.deployerConfigContext.xml 
  18.  * @see 5.casLoginView.jsp表单中增加rememberMe字段 
  19.  * @see 6.login-webflow.xml增加接收表单rememberMe字段的配置 
  20.  * @see 7.UsernamePasswordCaptchaCredential.java集成RememberMeUsernamePasswordCredential使得可以接收表单的rememberMe字段 
  21.  * @see ------------------------------------------------------------------------------------------------------------------------ 
  22.  * @create  @create 2016-6-6 下午08:34:18
  23.  * @author 玄玉<http://blog.csdn.net/jadyer> 
  24.  */  

 

1.ticketExpirationPolicies.xml的修改

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!--  
  3.   
  4.     Licensed to Jasig under one or more contributor license  
  5.     agreements. See the NOTICE file distributed with this work  
  6.     for additional information regarding copyright ownership.  
  7.     Jasig licenses this file to you under the Apache License,  
  8.     Version 2.0 (the "License"); you may not use this file  
  9.     except in compliance with the License.  You may obtain a  
  10.     copy of the License at the following location:  
  11.   
  12.       http://www.apache.org/licenses/LICENSE-2.0  
  13.   
  14.     Unless required by applicable law or agreed to in writing,  
  15.     software distributed under the License is distributed on an  
  16.     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  
  17.     KIND, either express or implied.  See the License for the  
  18.     specific language governing permissions and limitations  
  19.     under the License.  
  20.   
  21. -->  
  22. <beans xmlns="http://www.springframework.org/schema/beans"  
  23.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  24.        xmlns:p="http://www.springframework.org/schema/p"  
  25.        xmlns:c="http://www.springframework.org/schema/c" xmlns:util="http://www.springframework.org/schema/util"  
  26.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  27.                            http://www.springframework.org/schema/beans/spring-beans.xsd  
  28.                            http://www.springframework.org/schema/util  
  29.                            http://www.springframework.org/schema/util/spring-util.xsd">  
  30.     <description>  
  31.         Assignment of expiration policies for the different tickets generated by CAS including ticket granting ticket  
  32.         (TGT), service ticket (ST), proxy granting ticket (PGT), and proxy ticket (PT).  
  33.         These expiration policies determine how long the ticket they are assigned to can be used and even how often they  
  34.         can be used before becoming expired / invalid.  
  35.     </description>  
  36.   
  37.     <!-- Expiration policies -->  
  38.     <util:constant id="SECONDS" static-field="java.util.concurrent.TimeUnit.SECONDS"/>  
  39.     <bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"  
  40.           c:numberOfUses="1" c:timeToKill="${st.timeToKillInSeconds:10}" c:timeUnit-ref="SECONDS"/>  
  41.   
  42.     <!-- TicketGrantingTicketExpirationPolicy: Default as of 3.5 -->  
  43.     <!-- Provides both idle and hard timeouts, for instance 2 hour sliding window with an 8 hour max lifetime -->  
  44.     <!--   
  45.     <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy"  
  46.           p:maxTimeToLiveInSeconds="${tgt.maxTimeToLiveInSeconds:28800}"  
  47.           p:timeToKillInSeconds="${tgt.timeToKillInSeconds:7200}"/>  
  48.      -->  
  49.   
  50.     <!-- 以下为RememberMe所需配置 -->  
  51.     <!-- 这里要先把原有的<bean id="grantingTicketExpirationPolicy">注释掉,如上所示 -->  
  52.     <!-- 之所以注释是因为applicationContext.xml的第117行要用到<bean id="grantingTicketExpirationPolicy"> -->  
  53.     <!-- 而我们实现RememberMe需要用到的是RememberMeDelegatingExpirationPolicy,而非默认的TicketGrantingTicketExpirationPolicy -->  
  54.     <!-- 看看下面的配置就一目了然了 -->  
  55.     <!--  
  56.         | The following policy applies to standard CAS SSO sessions.  
  57.         | Default 2h (7200s) sliding expiration with default 8h (28800s) maximum lifetime.  
  58.     -->  
  59.     <bean id="standardSessionTGTExpirationPolicy" class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy"  
  60.           p:maxTimeToLiveInSeconds="${tgt.maxTimeToLiveInSeconds:28800}"  
  61.           p:timeToKillInSeconds="${tgt.timeToKillInSeconds:7200}"/>  
  62.     <!--  
  63.         | The following policy applies to long term CAS SSO sessions.  
  64.         | Default duration is two weeks (1209600s).  
  65.     -->  
  66.     <bean id="longTermSessionTGTExpirationPolicy" class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy"  
  67.           c:timeToKillInMilliSeconds="#{ ${rememberMeDuration:1209600} * 1000 }"/>  
  68.     <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.RememberMeDelegatingExpirationPolicy"  
  69.           p:sessionExpirationPolicy-ref="standardSessionTGTExpirationPolicy"  
  70.           p:rememberMeExpirationPolicy-ref="longTermSessionTGTExpirationPolicy"/>  
  71. </beans>  

 

2.ticketGrantingTicketCookieGenerator.xml的修改

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:p="http://www.springframework.org/schema/p"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  6.     <description>  
  7.         Defines the cookie that stores the TicketGrantingTicket.  You most likely should never modify these (especially the "secure" property).  
  8.         You can change the name if you want to make it harder for people to guess.  
  9.     </description>  
  10.       
  11.     <!-- 针对RememberMe需增加p:rememberMeMaxAge属性配置 -->  
  12.     <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
  13.         p:cookieSecure="false"  
  14.         p:cookieMaxAge="-1"  
  15.         p:rememberMeMaxAge="${rememberMeDuration:1209600}"  
  16.         p:cookieName="CASTGC"  
  17.         p:cookiePath="/cas" />  
  18. </beans>  

 

 

3.deployerConfigContext.xml修改的部分

 

  1. <bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">  
  2.     <constructor-arg>  
  3.         <map>  
  4.             <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />  
  5.             <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />  
  6.         </map>  
  7.     </constructor-arg>  
  8.   
  9.     <property name="authenticationPolicy">  
  10.         <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />  
  11.     </property>  
  12.       
  13.     <!-- 针对RememberMe需增加的属性配置 -->  
  14.     <property name="authenticationMetaDataPopulators">  
  15.         <list>  
  16.             <bean class="org.jasig.cas.authentication.SuccessfulHandlerMetaDataPopulator"/>  
  17.             <bean class="org.jasig.cas.authentication.principal.RememberMeAuthenticationMetaDataPopulator"/>  
  18.         </list>  
  19.     </property>  
  20. </bean>  

 

4.login-webflow.xml修改的部分

  1. <view-state id="viewLoginForm" view="casLoginView" model="credential">  
  2.        <binder>  
  3.            <binding property="username"/>  
  4.            <binding property="password"/>  
  5.            <!-- 前台表单添加验证码字段captcha -->  
  6.            <binding property="captcha"/>  
  7.            <!-- 前台表单添加RememberMe字段 -->  
  8.            <binding property="rememberMe"/>  
  9.        </binder>  
  10.        <on-entry>  
  11.            <set name="viewScope.commandName" value="'credential'" />  
  12.        </on-entry>  
  13.     <transition on="submit" bind="true" validate="true" to="validateCaptcha">  
  14.            <evaluate expression="authenticationViaCaptchaFormAction.doBind(flowRequestContext, flowScope.credential)" />  
  15.        </transition>  
  16. </view-state>  

 

 

5.//WEB-INF//view//jsp//star//ui//casLoginView.jsp

 

  1. <tr>  
  2.             <td>  
  3.                 <input type="checkbox" tabindex="4" name="rememberMe" value="true"/>  
  4.                 <label for="warn">RememberMe</label>  
  5.             </td>  
  6.         </tr>

 

6.最后是cas.properties中增加的rememberMeDuration配置

 

 

  1. #服务端RememberMe的有效期,默认为1209600s,即两周  
  2. rememberMeDuration=120960

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    CAS-4.0.3服务端RememberMe的Demo

    【CAS-4.0.3服务端RememberMe的Demo】是一个关于中央认证服务(Central Authentication Service,简称CAS)4.0.3版本中RememberMe功能的实战示例。RememberMe功能允许用户在登录时选择“记住我”,从而在一段时间内...

    cas服务端完整构建

    在构建CAS服务端的过程中,生成证书是非常重要的步骤之一,因为证书确保了服务器与客户端之间能够安全地进行通信。本部分将详细介绍如何利用JDK自带的`keytool`工具来生成证书。 ##### 1.1 生成证书 使用`keytool`...

    CAS服务端和客户端war包.rar

    这个压缩包“CAS服务端和客户端war包.rar”包含了实现CAS服务所需的所有核心组件和两个客户端应用,方便进行SSO环境的搭建。 1. **CAS服务器端war包(cas.war)** CAS服务器是整个SSO系统的核心,它提供认证服务,...

    CAS服务端文件下载

    首先,CAS服务端的构建使用了Maven,这是一个广泛使用的Java项目管理和集成工具。通过Maven,我们可以方便地管理项目的依赖关系,执行构建任务,并遵循标准的目录结构。要导入这个项目,你需要在本地安装Maven,然后...

    cas服务端-连接数据库版

    CAS(Central Authentication Service)服务端连接数据库版是一个用于集中身份验证的安全框架,它允许用户通过一个单一登录(Single Sign-On, SSO)过程访问多个应用系统。在这个版本中,CAS服务器与MySQL数据库相...

    cas服务端war包

    CAS服务端的war包,执行build.sh run可以直接运行,如果运行时报错,则需要安装\etc\cas\thekeystore,这个是个证书。

    cas服务端和客户端可用代码

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,它允许用户通过一个统一的身份验证入口点登录,然后在多个应用系统间自由切换,而无需再次进行身份验证。这个给定的...

    cas服务端应用

    CAS服务端应用是这个框架的核心部分,它处理用户的身份验证请求,确保用户在访问多个受保护的应用时只需要登录一次。在你提供的信息中,`cas-server-webapp-4.0.0.war` 是一个WAR文件,这是一个Web应用程序的归档...

    cas 普通方式和SpringBoot方式客户端 普通方式服务端

    在本文中,我们将探讨如何在普通方式和Spring Boot方式下配置和使用CAS客户端和服务端。 首先,让我们了解一下`CMD生成证书命令.txt`。在CAS部署中,安全通信通常依赖于SSL/TLS证书,用于加密传输数据。这个文件...

    cas 服务端

    cas服务端代码,版本是4.0版本这个版本是maven 版本,稳定性不错所以我选这个

    cas 服务端和客户端 main是自定义服务端登陆页面 还有一个是5.2.3原版

    CAS(Central Authentication Service)是一种基于Web的单点登录(Single Sign-On, SSO)协议,广泛应用于企业级应用系统中,以实现用户统一身份验证。在这个整合项目中,CAS服务端与客户端的角色得到了清晰的划分,...

    CAS服务端(非原生)

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在多个应用系统间实现统一的认证。在这个“CAS服务端(非原生)”项目中,开发者对标准的CAS服务端进行了改造,以...

    基于Laravel的CAS服务端实现PHP-CAS-Server.zip

    PHP CAS Server是一个基于Laravel框架开发的CAS服务端实现,旨在解决使用PHP技术栈的中小型公司因无法对Java版CAS服务端二次开发而放弃使用CAS的问题,因此本项目的核心目标之一就是易于扩展。功能:目前已经实现了...

    cas.rar_cas java_cas服务端代码_单点登录

    CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要功能是实现单点登录(Single Sign-On,SSO)。单点登录允许用户在访问多个相互信任的应用系统时只需要进行一次登录,提高了用户体验并...

    cas服务端所需jar包

    cas服务端所需jar包,c3p0-0.9.1.2.jar 、cas-server-support-jdbc-4.0.0.jar、 mysql-connector-java-5.1.13-bin.jar

    CAS服务端war包(亲测可用)

    CAS服务端是实现SSO功能的核心组件,允许用户只需要一次登录就能访问多个相互信任的应用系统,极大地提升了用户体验和安全性。 本压缩包包含的资源为"CAS服务端war包",这意味着这是一个预编译的Java Web应用,以...

    cas-server-服务端源码.zip

    `cas-server-服务端源码.zip`提供的正是CAS服务端的源代码,特别是老版本4.2.27。 CAS的核心工作流程如下: 1. **认证过程**:当用户尝试访问受CAS保护的应用时,会被重定向到CAS服务器进行身份验证。如果用户尚未...

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    CAS 4.2.7是CAS的一个稳定版本,它包含了服务端(cas-server)和客户端(cas-client)的源码。通过阅读源码,开发者可以深入了解CAS的工作原理,以及如何扩展和定制CAS功能。 4. **数据库连接相关jar包**: 如果...

    CAS服务端jar

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要设计用于实现Web应用的单点登录(Single Sign-On,简称SSO)。它允许用户在一个地方登录后,无需再次验证即可访问多个...

    Cas服务端部署+认证采用MD加密方式

    Cas服务端部署与MD5加密认证是网络安全领域中常见的实践,尤其在企业级应用系统中,为了确保用户身份验证的安全性,通常会采用这样的方法。Cas(Central Authentication Service)是一种开放源码的身份验证框架,它...

Global site tag (gtag.js) - Google Analytics