@ -36,6 +36,7 @@ import org.springframework.security.core.userdetails.UserDetailsService;
@@ -36,6 +36,7 @@ import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager ;
import org.springframework.security.web.authentication.RememberMeServices ;
import org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter ;
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices ;
import org.springframework.test.web.servlet.MockMvc ;
import org.springframework.test.web.servlet.MvcResult ;
@ -453,4 +454,36 @@ public class RememberMeConfigurerTests {
@@ -453,4 +454,36 @@ public class RememberMeConfigurerTests {
// @formatter:on
}
}
@Test
public void getWhenRememberMeCookieThenAuthenticationIsRememberMeAuthenticationTokenWithFallbackKeyConfiguration ( )
throws Exception {
this . spring . register ( FallbackRememberMeKeyConfig . class ) . autowire ( ) ;
MvcResult mvcResult = this . mvc . perform ( post ( "/login" )
. with ( csrf ( ) )
. param ( "username" , "user" )
. param ( "password" , "password" )
. param ( "remember-me" , "true" ) )
. andReturn ( ) ;
Cookie rememberMeCookie = mvcResult . getResponse ( ) . getCookie ( "remember-me" ) ;
this . mvc . perform ( get ( "/abc" )
. cookie ( rememberMeCookie ) )
. andExpect ( authenticated ( ) . withAuthentication ( auth - >
assertThat ( auth ) . isInstanceOf ( RememberMeAuthenticationToken . class ) ) ) ;
}
@EnableWebSecurity
static class FallbackRememberMeKeyConfig extends RememberMeConfig {
@Override
protected void configure ( HttpSecurity http ) throws Exception {
super . configure ( http ) ;
// @formatter:off
http . rememberMe ( )
. rememberMeServices ( new TokenBasedRememberMeServices ( "key" , userDetailsService ( ) ) ) ;
// @formatter:on
}
}
}