Hi Scott,

Thanks for the reply. Yes, you are right, my single sign on session is still
enabled. I know we could specify a global session timeout for all casified
apps by modifying ticketExpirationPolicies.xml. However, if I have app1 and
app2, both of them casified, and for app1 I want to configure session
timeout as 5 minutes and for app2 I want to configure session timeout as 10
minutes. How do I implement that? 

My understanding is that when app1 timeout for being inactive for 5 minutes,
to totally log the user out, I have to invalidate its service ticket, and
actually call cas logout (otherwise when the user open a new tab in the same
browser and try to access secured page in app1, he is still able to get
there without being reauthenticated). However, if I log the user out of app1
by calling CAS logout, the user will be log out of app2 as well supposed
he/she has another tab that is browsing app2. 

Please advise. Thanks so much!

Xuejin



scott_battaglia wrote:
> 
> Most likely your single sign on session is still enabled, since its
> completely independent of an application's session, and you're just being
> automatically logged back into the application.
> 
> 
> On Wed, Jun 10, 2009 at 5:07 PM, Xuejin Ruan <[email protected]>
> wrote:
> 
>>
>> I have an appliction implementing Spring Security with CAS. I am trying
>> to
>> set session time out in web.xml file so that when the application is
>> inactive for certain minutes, it will trigger session timeout and the
>> user
>> need to be reauthenticated. Without integrating the application with CAS,
>> session timeout works fine for Spring Security as expected. However,
>> after
>> integrating it with CAS, session timeout doesn't seem to be working, and
>> I
>> could still navigate to secured page even after the page being inactive
>> for
>> more than the time I set in session timeout config.
>>
>> What I did was to define the following in web.xml file (examples provided
>> in
>> http://idms.rutgers.edu/cas/sample_spring_security.shtml):
>>
>>  <listener>
>>
>>
>> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
>> </listener>
>> ......
>> <session-config>
>>        <session-timeout>1</session-timeout>
>> </session-config>
>>
>> Am I missing anything?
>>
>> Thanks in advance for any advice.
>>
>> Xuejin
>>
>> Below is my web.xml:
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> <?xml version="1.0" encoding="UTF-8"?>
>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee";
>>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"; version="2.4">
>>
>>    <display-name>Spring Security Tutorial Application</display-name>
>>
>>    <context-param>
>>                <param-name>contextConfigLocation</param-name>
>>                <param-value>
>>                        classpath:applicationContext-business.xml
>>                        classpath:gov/pc/portal/springsecurity/spring.xml
>>                        /WEB-INF/applicationContext-security.xml
>>                </param-value>
>>    </context-param>
>>
>>    <context-param>
>>        <param-name>log4jConfigLocation</param-name>
>>        <param-value>/WEB-INF/classes/log4j.properties</param-value>
>>    </context-param>
>>
>>    <context-param>
>>       <param-name>webAppRootKey</param-name>
>>
>>
>> <param-value>C:\apache-tomcat-6.0.18\apache-tomcat-6.0.18\webapps\SpringSecurityAnotherTest\</param-value>
>>     </context-param>
>>
>>
>>    <filter>
>>        <filter-name>springSecurityFilterChain</filter-name>
>>
>>
>> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
>>    </filter>
>>
>>    <filter-mapping>
>>      <filter-name>springSecurityFilterChain</filter-name>
>>      <url-pattern>/*</url-pattern>
>>    </filter-mapping>
>>
>>    <listener>
>>
>>
>> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>>    </listener>
>>
>>
>>    <listener>
>>
>>
>> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
>> </listener>
>>
>>    <listener>
>>
>>
>> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
>>    </listener>
>>
>>    <servlet>
>>                <servlet-name>bank</servlet-name>
>>
>>
>> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
>>                <load-on-startup>1</load-on-startup>
>>    </servlet>
>>
>>    <servlet-mapping>
>>        <servlet-name>bank</servlet-name>
>>        <url-pattern>*.html</url-pattern>
>>     </servlet-mapping>
>>
>>                <!-- Test on session timeout configuration -->
>>    <session-config>
>>        <session-timeout>1</session-timeout>
>>    </session-config>
>>
>>     <welcome-file-list>
>>                <welcome-file>index.jsp</welcome-file>
>>        </welcome-file-list>
>>
>> </web-app>
>> ~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Below is applicationContext-security.xml:
>>
>> ***************************
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <beans xmlns="http://www.springframework.org/schema/beans";
>>        xmlns:sec="http://www.springframework.org/schema/security";
>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>        xmlns:p="http://www.springframework.org/schema/p";
>>    xsi:schemaLocation="http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>                        http://www.springframework.org/schema/security
>> http://www.springframework.org/schema/security/spring-security-2.0.xsd";>
>>
>>    <sec:http entry-point-ref="casProcessingFilterEntryPoint">
>>    <sec:intercept-url pattern="/secure/extreme/**"
>> access="ROLE_SUPERVISOR"
>> requires-channel="https"/>
>>        <sec:intercept-url pattern="/secure/**" access="ROLE_USER" />
>>        <sec:intercept-url pattern="/listAccounts.html"
>> access="IS_AUTHENTICATED_REMEMBERED" />
>>    <sec:intercept-url pattern="/post.html" access="ROLE_TELLER" />
>>    <sec:logout
>> logout-success-url="https://DPRG110.ad.co.pierce.wa.us:8443/cas/logout"/>
>>        <sec:concurrent-session-control max-sessions="1"
>> exception-if-maximum-exceeded="true"/> <!--This will only allow one user
>> to
>> login at one time-->
>>    </sec:http>
>>
>>
>>    <sec:authentication-manager alias="authenticationManager"/>
>>
>>    <!--CAS  -->
>>
>>    <bean id="casProcessingFilterEntryPoint"
>> class="org.springframework.security.ui.cas.CasProcessingFilterEntryPoint">
>>        <property name="loginUrl"
>> value="https://DPRG110.ad.co.pierce.wa.us:8443/cas/login"/>
>>        <property name="serviceProperties" ref="serviceProperties"/>
>>    </bean>
>>
>>    <bean id="serviceProperties"
>> class="org.springframework.security.ui.cas.ServiceProperties">
>>        <property name="service"
>> value="
>> https://DPRG110.ad.co.pierce.wa.us:8443/SpringSecurityTest/j_spring_cas_security_check
>> "/>
>>        <property name="sendRenew" value="false"/>
>>    </bean>
>>
>>
>>   <bean id="casAuthenticationProvider"
>>
>> class="org.springframework.security.providers.cas.CasAuthenticationProvider">
>>        <sec:custom-authentication-provider />
>>        <property name="userDetailsService" ref="userService"/>
>>        <property name="serviceProperties" ref="serviceProperties" />
>>        <property name="ticketValidator">
>>            <bean
>> class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
>>                <constructor-arg index="0"
>> value="https://DPRG110.ad.co.pierce.wa.us:8443/cas"; />
>>                <property name="proxyGrantingTicketStorage"
>> ref="proxyGrantingTicketStorage" />
>>                <property name="proxyCallbackUrl"
>> value="https://DPRG110.ad.co.pierce.wa.us:8443/cas/secure/receptor"; />
>>            </bean>
>>        </property>
>>        <property name="key" value="changeit"/>
>>    </bean>
>>
>>    <bean id="casProcessingFilter"
>> class="org.springframework.security.ui.cas.CasProcessingFilter"
>>                 p:authenticationManager-ref="authenticationManager"
>>                p:authenticationFailureUrl="/index.jsp"
>>                p:alwaysUseDefaultTargetUrl="false"
>>                p:filterProcessesUrl="/j_spring_cas_security_check"
>>                p:defaultTargetUrl="/" >
>>                <sec:custom-filter after="CAS_PROCESSING_FILTER"/>
>>    </bean>
>>
>>
>>        <bean id="proxyGrantingTicketStorage"
>> class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl" />
>>
>>        <sec:authentication-provider user-service-ref="userService" />
>>
>>                    <!-- Password Encoder -->
>>                <bean id="passwordEncoder"
>>
>> class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/>
>>
>>      <bean id="userService"
>> class="gov.pc.portal.springsecurity.PortalUserService">
>>                <property name="dataSource" ref="portalDataSource"/>
>>                <property name="applicationId" value="107"/>
>>        </bean>
>>        </beans>
>>
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Session-timeout-for-Spring-Security-with-CAS-tp23971062p23971062.html
>> Sent from the CAS Users mailing list archive at Nabble.com.
>>
>>
>> --
>> You are currently subscribed to [email protected] as:
>> [email protected]
>> To unsubscribe, change settings or access archives, see
>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>
> 
> -- 
> You are currently subscribed to [email protected] as:
> [email protected]
> To unsubscribe, change settings or access archives, see
> http://www.ja-sig.org/wiki/display/JSG/cas-user
> 

-- 
View this message in context: 
http://www.nabble.com/Session-timeout-for-Spring-Security-with-CAS-tp23971062p23985416.html
Sent from the CAS Users mailing list archive at Nabble.com.


-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to