|
@@ -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 {
|
|
|
// @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
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|