Results 1 to 1 of 1

Thread: CookieTheftException: Invalid remember-me token (Series/token) mismatch.

  1. #1
    Join Date
    Mar 2011
    Location
    Conway, AR
    Posts
    12

    Default CookieTheftException: Invalid remember-me token (Series/token) mismatch.

    I have been researching this issue, but I haven't found anything that works or even explains what is happening.

    User can login with "remember-me" option set, and a "remember-me" cookie is given that has an expires of April 18th (well in the future). User closes browser, reopens browser, and comes back to the site. When attempting to access the restricted pages, sometimes there is no immediate issue (cookie is recognized and user is signed in correctly) and other times the exception is thrown right away.

    Attached bad.txt, which is a DEBUG-level log of when the user attempts to access a restricted page after opening the browser up again. It shows that the first request went thru fine, but the second one did not.

    It's been a very long day, so am I missing something? Any help whatsoever would be greatly appreciated! Here is my security configuration, if I need to post anything else I will be happy to!

    Code:
    <beans:beans
    	xmlns="http://www.springframework.org/schema/security"
    	xmlns:beans="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
    						http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    
    						http://www.springframework.org/schema/security
    						http://www.springframework.org/schema/security/spring-security-3.0.xsd">
    
    	<http use-expressions="true" auto-config="false" entry-point-ref="loginUrlAuthenticationEntryPoint">
    		<intercept-url pattern="/account/secured" access="isAuthenticated()" />
    		<intercept-url pattern="/account/new" access="permitAll" />
    		<intercept-url pattern="/account/login" access="permitAll" />
    		<intercept-url pattern="/account/**" access="isAuthenticated()" />
    		<intercept-url pattern="/**" access="permitAll" />
    
    		<custom-filter position="FORM_LOGIN_FILTER" ref="formAuthenticationFilter" />
    		<custom-filter position="REMEMBER_ME_FILTER" ref="rememberMeAuthenticationFilter" />
    		<custom-filter position="LOGOUT_FILTER" ref="logoutFilter" />
    	</http>
    
    	<authentication-manager alias="authenticationManager">
    		<authentication-provider ref="authenticationProvider" />
    		<authentication-provider ref="rememberMeAuthenticationProvider" />
    	</authentication-manager>
    
     	<beans:bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    		<beans:property name="passwordEncoder">
    			<beans:bean class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" />
    		</beans:property>
    		<beans:property name="userDetailsService" ref="customerDao" />
    	</beans:bean>
    
    	<beans:bean id="loginUrlAuthenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
    		<beans:property name="loginFormUrl" value="/account/login" />
    	</beans:bean>
    
    	<beans:bean id="formAuthenticationFilter" class="com.foobar.website.security.FormAuthenticationFilter">
    		<beans:property name="authenticationManager" ref="authenticationManager" />
    		<beans:property name="authenticationFailureHandler" ref="failureHandler" />
    		<beans:property name="authenticationSuccessHandler" ref="successHandler" />
    		<beans:property name="usernameParameter" value="email" />
    		<beans:property name="passwordParameter" value="password" />
    		<beans:property name="filterProcessesUrl" value="/account/login" />
    		<beans:property name="postOnly" value="true" />
    		<beans:property name="rememberMeServices" ref="rememberMeServices" />
    	</beans:bean>
    
    	<beans:bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
    		<beans:property name="defaultTargetUrl" value="/account/login" />
    	</beans:bean>
    
    	<beans:bean id="failureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
    		<beans:property name="defaultFailureUrl" value="/account/login?login_error=true" />
    	</beans:bean>
    
    	<beans:bean id="rememberMeServices" class="com.foobar.website.security.RememberMeServices">
    		<beans:property name="tokenRepository" ref="jdbcTokenRepository" />
    		<beans:property name="userDetailsService" ref="customerDao" />
    		<beans:property name="key" value="myRememberMeKey" />
    		<beans:property name="alwaysRemember" value="false" />
    		<beans:property name="parameter" value="remember" />
    		<beans:property name="cookieName" value="remember" />
    	</beans:bean>
    
    	<beans:bean id="jdbcTokenRepository" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl">
    		<beans:property name="createTableOnStartup" value="false" />
    		<beans:property name="dataSource" ref="mysqlDataSource" />
    	</beans:bean>
    
    	<beans:bean id="rememberMeAuthenticationProvider" class="org.springframework.security.authentication.RememberMeAuthenticationProvider">
    		<beans:property name="key" value="myRememberMeKey" />
    	</beans:bean>
    
    	<beans:bean id="rememberMeAuthenticationFilter" class="org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter">
    		<beans:property name="rememberMeServices" ref="rememberMeServices" />
    		<beans:property name="authenticationManager" ref="authenticationManager" />
    	</beans:bean>
    
    	<beans:bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
    		<beans:constructor-arg index="0" value="/account/login" />
    		<beans:constructor-arg index="1">
    			<beans:list>
    				<beans:ref bean="rememberMeServices" />
    				<beans:bean id="securityContextLogoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" />
    			</beans:list>
    		</beans:constructor-arg>
    		<beans:property name="filterProcessesUrl" value="/account/logout" />
    	</beans:bean>
    
    </beans:beans>
    Attached Files Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •