diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurer.java index dcdd8ec3a4..0e36f818cc 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurer.java @@ -41,8 +41,8 @@ import org.springframework.security.web.authentication.AuthenticationSuccessHand import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import org.springframework.security.web.authentication.ott.GenerateOneTimeTokenFilter; -import org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler; import org.springframework.security.web.authentication.ott.OneTimeTokenAuthenticationConverter; +import org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler; import org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter; import org.springframework.security.web.authentication.ui.DefaultOneTimeTokenSubmitPageGeneratingFilter; import org.springframework.security.web.authentication.ui.DefaultResourcesFilter; @@ -73,9 +73,9 @@ public final class OneTimeTokenLoginConfigurer> private String loginProcessingUrl = "/login/ott"; - private String generateTokenUrl = "/ott/generate"; + private String tokenGeneratingUrl = "/ott/generate"; - private GeneratedOneTimeTokenHandler generatedOneTimeTokenHandler; + private OneTimeTokenGenerationSuccessHandler oneTimeTokenGenerationSuccessHandler; private AuthenticationProvider authenticationProvider; @@ -97,7 +97,7 @@ public final class OneTimeTokenLoginConfigurer> return; } loginPageGeneratingFilter.setOneTimeTokenEnabled(true); - loginPageGeneratingFilter.setGenerateOneTimeTokenUrl(this.generateTokenUrl); + loginPageGeneratingFilter.setOneTimeTokenGenerationUrl(this.tokenGeneratingUrl); if (this.authenticationFailureHandler == null && StringUtils.hasText(loginPageGeneratingFilter.getLoginPageUrl())) { this.authenticationFailureHandler = new SimpleUrlAuthenticationFailureHandler( @@ -134,22 +134,22 @@ public final class OneTimeTokenLoginConfigurer> private void configureOttGenerateFilter(H http) { GenerateOneTimeTokenFilter generateFilter = new GenerateOneTimeTokenFilter(getOneTimeTokenService(http), getGeneratedOneTimeTokenHandler(http)); - generateFilter.setRequestMatcher(antMatcher(HttpMethod.POST, this.generateTokenUrl)); + generateFilter.setRequestMatcher(antMatcher(HttpMethod.POST, this.tokenGeneratingUrl)); http.addFilter(postProcess(generateFilter)); http.addFilter(DefaultResourcesFilter.css()); } - private GeneratedOneTimeTokenHandler getGeneratedOneTimeTokenHandler(H http) { - if (this.generatedOneTimeTokenHandler == null) { - this.generatedOneTimeTokenHandler = getBeanOrNull(http, GeneratedOneTimeTokenHandler.class); + private OneTimeTokenGenerationSuccessHandler getGeneratedOneTimeTokenHandler(H http) { + if (this.oneTimeTokenGenerationSuccessHandler == null) { + this.oneTimeTokenGenerationSuccessHandler = getBeanOrNull(http, OneTimeTokenGenerationSuccessHandler.class); } - if (this.generatedOneTimeTokenHandler == null) { + if (this.oneTimeTokenGenerationSuccessHandler == null) { throw new IllegalStateException(""" A GeneratedOneTimeTokenHandler is required to enable oneTimeTokenLogin(). Please provide it as a bean or pass it to the oneTimeTokenLogin() DSL. """); } - return this.generatedOneTimeTokenHandler; + return this.oneTimeTokenGenerationSuccessHandler; } private void configureSubmitPage(H http) { @@ -186,22 +186,22 @@ public final class OneTimeTokenLoginConfigurer> /** * Specifies the URL that a One-Time Token generate request will be processed. * Defaults to {@code /ott/generate}. - * @param generateTokenUrl + * @param tokenGeneratingUrl */ - public OneTimeTokenLoginConfigurer generateTokenUrl(String generateTokenUrl) { - Assert.hasText(generateTokenUrl, "generateTokenUrl cannot be null or empty"); - this.generateTokenUrl = generateTokenUrl; + public OneTimeTokenLoginConfigurer tokenGeneratingUrl(String tokenGeneratingUrl) { + Assert.hasText(tokenGeneratingUrl, "tokenGeneratingUrl cannot be null or empty"); + this.tokenGeneratingUrl = tokenGeneratingUrl; return this; } /** * Specifies strategy to be used to handle generated one-time tokens. - * @param generatedOneTimeTokenHandler + * @param oneTimeTokenGenerationSuccessHandler */ - public OneTimeTokenLoginConfigurer generatedOneTimeTokenHandler( - GeneratedOneTimeTokenHandler generatedOneTimeTokenHandler) { - Assert.notNull(generatedOneTimeTokenHandler, "generatedOneTimeTokenHandler cannot be null"); - this.generatedOneTimeTokenHandler = generatedOneTimeTokenHandler; + public OneTimeTokenLoginConfigurer tokenGenerationSuccessHandler( + OneTimeTokenGenerationSuccessHandler oneTimeTokenGenerationSuccessHandler) { + Assert.notNull(oneTimeTokenGenerationSuccessHandler, "generatedOneTimeTokenHandler cannot be null"); + this.oneTimeTokenGenerationSuccessHandler = oneTimeTokenGenerationSuccessHandler; return this; } @@ -248,7 +248,7 @@ public final class OneTimeTokenLoginConfigurer> * {@link OneTimeToken} * @param oneTimeTokenService */ - public OneTimeTokenLoginConfigurer oneTimeTokenService(OneTimeTokenService oneTimeTokenService) { + public OneTimeTokenLoginConfigurer tokenService(OneTimeTokenService oneTimeTokenService) { Assert.notNull(oneTimeTokenService, "oneTimeTokenService cannot be null"); this.oneTimeTokenService = oneTimeTokenService; return this; diff --git a/config/src/main/java/org/springframework/security/config/web/server/ServerHttpSecurity.java b/config/src/main/java/org/springframework/security/config/web/server/ServerHttpSecurity.java index dff3ea38d6..82a1806e4a 100644 --- a/config/src/main/java/org/springframework/security/config/web/server/ServerHttpSecurity.java +++ b/config/src/main/java/org/springframework/security/config/web/server/ServerHttpSecurity.java @@ -157,8 +157,8 @@ import org.springframework.security.web.server.authentication.logout.SecurityCon import org.springframework.security.web.server.authentication.logout.ServerLogoutHandler; import org.springframework.security.web.server.authentication.logout.ServerLogoutSuccessHandler; import org.springframework.security.web.server.authentication.ott.GenerateOneTimeTokenWebFilter; -import org.springframework.security.web.server.authentication.ott.ServerGeneratedOneTimeTokenHandler; import org.springframework.security.web.server.authentication.ott.ServerOneTimeTokenAuthenticationConverter; +import org.springframework.security.web.server.authentication.ott.ServerOneTimeTokenGenerationSuccessHandler; import org.springframework.security.web.server.authorization.AuthorizationContext; import org.springframework.security.web.server.authorization.AuthorizationWebFilter; import org.springframework.security.web.server.authorization.DelegatingReactiveAuthorizationManager; @@ -5922,7 +5922,7 @@ public class ServerHttpSecurity { private ReactiveAuthenticationManager authenticationManager; - private ReactiveOneTimeTokenService oneTimeTokenService; + private ReactiveOneTimeTokenService tokenService; private ServerAuthenticationConverter authenticationConverter = new ServerOneTimeTokenAuthenticationConverter(); @@ -5936,7 +5936,7 @@ public class ServerHttpSecurity { private final List authenticationSuccessHandlers = new ArrayList<>(); - private ServerGeneratedOneTimeTokenHandler generatedOneTimeTokenHandler; + private ServerOneTimeTokenGenerationSuccessHandler tokenGenerationSuccessHandler; private ServerSecurityContextRepository securityContextRepository; @@ -5944,7 +5944,7 @@ public class ServerHttpSecurity { private String defaultSubmitPageUrl = "/login/ott"; - private String generateTokenUrl = "/ott/generate"; + private String tokenGeneratingUrl = "/ott/generate"; private boolean submitPageEnabled = true; @@ -5981,10 +5981,10 @@ public class ServerHttpSecurity { } private void configureOttGenerateFilter(ServerHttpSecurity http) { - GenerateOneTimeTokenWebFilter generateFilter = new GenerateOneTimeTokenWebFilter(getOneTimeTokenService(), - getGeneratedOneTimeTokenHandler()); + GenerateOneTimeTokenWebFilter generateFilter = new GenerateOneTimeTokenWebFilter(getTokenService(), + getTokenGenerationSuccessHandler()); generateFilter - .setRequestMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, this.generateTokenUrl)); + .setRequestMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, this.tokenGeneratingUrl)); http.addFilterAt(generateFilter, SecurityWebFiltersOrder.ONE_TIME_TOKEN); } @@ -5994,7 +5994,7 @@ public class ServerHttpSecurity { OrderedWebFilter orderedWebFilter = (OrderedWebFilter) webFilter; if (orderedWebFilter.webFilter instanceof LoginPageGeneratingWebFilter loginPageGeneratingFilter) { loginPageGeneratingFilter.setOneTimeTokenEnabled(true); - loginPageGeneratingFilter.setGenerateOneTimeTokenUrl(this.generateTokenUrl); + loginPageGeneratingFilter.setGenerateOneTimeTokenUrl(this.tokenGeneratingUrl); break; } } @@ -6072,7 +6072,7 @@ public class ServerHttpSecurity { ReactiveAuthenticationManager getAuthenticationManager() { if (this.authenticationManager == null) { ReactiveUserDetailsService userDetailsService = getBean(ReactiveUserDetailsService.class); - return new OneTimeTokenReactiveAuthenticationManager(getOneTimeTokenService(), userDetailsService); + return new OneTimeTokenReactiveAuthenticationManager(getTokenService(), userDetailsService); } return this.authenticationManager; } @@ -6082,22 +6082,22 @@ public class ServerHttpSecurity { * {@link OneTimeToken} * @param oneTimeTokenService */ - public OneTimeTokenLoginSpec oneTimeTokenService(ReactiveOneTimeTokenService oneTimeTokenService) { + public OneTimeTokenLoginSpec tokenService(ReactiveOneTimeTokenService oneTimeTokenService) { Assert.notNull(oneTimeTokenService, "oneTimeTokenService cannot be null"); - this.oneTimeTokenService = oneTimeTokenService; + this.tokenService = oneTimeTokenService; return this; } - ReactiveOneTimeTokenService getOneTimeTokenService() { - if (this.oneTimeTokenService != null) { - return this.oneTimeTokenService; + ReactiveOneTimeTokenService getTokenService() { + if (this.tokenService != null) { + return this.tokenService; } ReactiveOneTimeTokenService oneTimeTokenService = getBeanOrNull(ReactiveOneTimeTokenService.class); if (oneTimeTokenService != null) { return oneTimeTokenService; } - this.oneTimeTokenService = new InMemoryReactiveOneTimeTokenService(); - return this.oneTimeTokenService; + this.tokenService = new InMemoryReactiveOneTimeTokenService(); + return this.tokenService; } /** @@ -6153,21 +6153,21 @@ public class ServerHttpSecurity { * Specifies strategy to be used to handle generated one-time tokens. * @param generatedOneTimeTokenHandler */ - public OneTimeTokenLoginSpec generatedOneTimeTokenHandler( - ServerGeneratedOneTimeTokenHandler generatedOneTimeTokenHandler) { + public OneTimeTokenLoginSpec tokenGenerationSuccessHandler( + ServerOneTimeTokenGenerationSuccessHandler generatedOneTimeTokenHandler) { Assert.notNull(generatedOneTimeTokenHandler, "generatedOneTimeTokenHandler cannot be null"); - this.generatedOneTimeTokenHandler = generatedOneTimeTokenHandler; + this.tokenGenerationSuccessHandler = generatedOneTimeTokenHandler; return this; } /** * Specifies the URL that a One-Time Token generate request will be processed. * Defaults to {@code /ott/generate}. - * @param generateTokenUrl + * @param tokenGeneratingUrl */ - public OneTimeTokenLoginSpec generateTokenUrl(String generateTokenUrl) { - Assert.hasText(generateTokenUrl, "generateTokenUrl cannot be null or empty"); - this.generateTokenUrl = generateTokenUrl; + public OneTimeTokenLoginSpec tokenGeneratingUrl(String tokenGeneratingUrl) { + Assert.hasText(tokenGeneratingUrl, "tokenGeneratingUrl cannot be null or empty"); + this.tokenGeneratingUrl = tokenGeneratingUrl; return this; } @@ -6187,17 +6187,17 @@ public class ServerHttpSecurity { return this; } - private ServerGeneratedOneTimeTokenHandler getGeneratedOneTimeTokenHandler() { - if (this.generatedOneTimeTokenHandler == null) { - this.generatedOneTimeTokenHandler = getBeanOrNull(ServerGeneratedOneTimeTokenHandler.class); + private ServerOneTimeTokenGenerationSuccessHandler getTokenGenerationSuccessHandler() { + if (this.tokenGenerationSuccessHandler == null) { + this.tokenGenerationSuccessHandler = getBeanOrNull(ServerOneTimeTokenGenerationSuccessHandler.class); } - if (this.generatedOneTimeTokenHandler == null) { + if (this.tokenGenerationSuccessHandler == null) { throw new IllegalStateException(""" A ServerGeneratedOneTimeTokenHandler is required to enable oneTimeTokenLogin(). Please provide it as a bean or pass it to the oneTimeTokenLogin() DSL. """); } - return this.generatedOneTimeTokenHandler; + return this.tokenGenerationSuccessHandler; } } diff --git a/config/src/main/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDsl.kt b/config/src/main/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDsl.kt index 675a40dede..025e65e741 100644 --- a/config/src/main/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDsl.kt +++ b/config/src/main/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDsl.kt @@ -23,40 +23,40 @@ import org.springframework.security.config.annotation.web.configurers.ott.OneTim import org.springframework.security.web.authentication.AuthenticationConverter import org.springframework.security.web.authentication.AuthenticationFailureHandler import org.springframework.security.web.authentication.AuthenticationSuccessHandler -import org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler +import org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler /** * A Kotlin DSL to configure [HttpSecurity] OAuth 2.0 login using idiomatic Kotlin code. * * @author Max Batischev * @since 6.4 - * @property oneTimeTokenService configures the [OneTimeTokenService] used to generate and consume + * @property tokenService configures the [OneTimeTokenService] used to generate and consume * @property authenticationConverter Use this [AuthenticationConverter] when converting incoming requests to an authentication * @property authenticationFailureHandler the [AuthenticationFailureHandler] to use when authentication * @property authenticationSuccessHandler the [AuthenticationSuccessHandler] to be used * @property defaultSubmitPageUrl sets the URL that the default submit page will be generated * @property showDefaultSubmitPage configures whether the default one-time token submit page should be shown * @property loginProcessingUrl the URL to process the login request - * @property generateTokenUrl the URL that a One-Time Token generate request will be processed - * @property generatedOneTimeTokenHandler the strategy to be used to handle generated one-time tokens + * @property tokenGeneratingUrl the URL that a One-Time Token generate request will be processed + * @property oneTimeTokenGenerationSuccessHandler the strategy to be used to handle generated one-time tokens * @property authenticationProvider the [AuthenticationProvider] to use when authenticating the user */ @SecurityMarker class OneTimeTokenLoginDsl { - var oneTimeTokenService: OneTimeTokenService? = null + var tokenService: OneTimeTokenService? = null var authenticationConverter: AuthenticationConverter? = null var authenticationFailureHandler: AuthenticationFailureHandler? = null var authenticationSuccessHandler: AuthenticationSuccessHandler? = null var defaultSubmitPageUrl: String? = null var loginProcessingUrl: String? = null - var generateTokenUrl: String? = null + var tokenGeneratingUrl: String? = null var showDefaultSubmitPage: Boolean? = true - var generatedOneTimeTokenHandler: GeneratedOneTimeTokenHandler? = null + var oneTimeTokenGenerationSuccessHandler: OneTimeTokenGenerationSuccessHandler? = null var authenticationProvider: AuthenticationProvider? = null internal fun get(): (OneTimeTokenLoginConfigurer) -> Unit { return { oneTimeTokenLoginConfigurer -> - oneTimeTokenService?.also { oneTimeTokenLoginConfigurer.oneTimeTokenService(oneTimeTokenService) } + tokenService?.also { oneTimeTokenLoginConfigurer.tokenService(tokenService) } authenticationConverter?.also { oneTimeTokenLoginConfigurer.authenticationConverter(authenticationConverter) } authenticationFailureHandler?.also { oneTimeTokenLoginConfigurer.authenticationFailureHandler( @@ -71,10 +71,10 @@ class OneTimeTokenLoginDsl { defaultSubmitPageUrl?.also { oneTimeTokenLoginConfigurer.defaultSubmitPageUrl(defaultSubmitPageUrl) } showDefaultSubmitPage?.also { oneTimeTokenLoginConfigurer.showDefaultSubmitPage(showDefaultSubmitPage!!) } loginProcessingUrl?.also { oneTimeTokenLoginConfigurer.loginProcessingUrl(loginProcessingUrl) } - generateTokenUrl?.also { oneTimeTokenLoginConfigurer.generateTokenUrl(generateTokenUrl) } - generatedOneTimeTokenHandler?.also { - oneTimeTokenLoginConfigurer.generatedOneTimeTokenHandler( - generatedOneTimeTokenHandler + tokenGeneratingUrl?.also { oneTimeTokenLoginConfigurer.tokenGeneratingUrl(tokenGeneratingUrl) } + oneTimeTokenGenerationSuccessHandler?.also { + oneTimeTokenLoginConfigurer.tokenGenerationSuccessHandler( + oneTimeTokenGenerationSuccessHandler ) } authenticationProvider?.also { oneTimeTokenLoginConfigurer.authenticationProvider(authenticationProvider) } diff --git a/config/src/test/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurerTests.java b/config/src/test/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurerTests.java index 165ac99faa..a1e230d5d3 100644 --- a/config/src/test/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurerTests.java +++ b/config/src/test/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurerTests.java @@ -40,8 +40,8 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; -import org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler; -import org.springframework.security.web.authentication.ott.RedirectGeneratedOneTimeTokenHandler; +import org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler; +import org.springframework.security.web.authentication.ott.RedirectOneTimeTokenGenerationSuccessHandler; import org.springframework.security.web.csrf.CsrfToken; import org.springframework.security.web.csrf.DefaultCsrfToken; import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository; @@ -72,7 +72,7 @@ public class OneTimeTokenLoginConfigurerTests { this.mvc.perform(post("/ott/generate").param("username", "user").with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/login/ott")); - String token = TestGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); this.mvc.perform(post("/login/ott").param("token", token).with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/"), authenticated()); @@ -84,7 +84,7 @@ public class OneTimeTokenLoginConfigurerTests { this.mvc.perform(post("/generateurl").param("username", "user").with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/redirected")); - String token = TestGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); this.mvc.perform(post("/loginprocessingurl").param("token", token).with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/authenticated"), authenticated()); @@ -96,7 +96,7 @@ public class OneTimeTokenLoginConfigurerTests { this.mvc.perform(post("/ott/generate").param("username", "user").with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/login/ott")); - String token = TestGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); this.mvc.perform(post("/login/ott").param("token", token).with(csrf())) .andExpectAll(status().isFound(), redirectedUrl("/"), authenticated()); @@ -183,7 +183,7 @@ public class OneTimeTokenLoginConfigurerTests { } @Test - void oneTimeTokenWhenNoGeneratedOneTimeTokenHandlerThenException() { + void oneTimeTokenWhenNoTokenGenerationSuccessHandlerThenException() { assertThatException() .isThrownBy(() -> this.spring.register(OneTimeTokenNoGeneratedOttHandlerConfig.class).autowire()) .havingRootCause() @@ -207,7 +207,7 @@ public class OneTimeTokenLoginConfigurerTests { .anyRequest().authenticated() ) .oneTimeTokenLogin((ott) -> ott - .generatedOneTimeTokenHandler(new TestGeneratedOneTimeTokenHandler()) + .tokenGenerationSuccessHandler(new TestOneTimeTokenGenerationSuccessHandler()) ); // @formatter:on return http.build(); @@ -228,8 +228,8 @@ public class OneTimeTokenLoginConfigurerTests { .anyRequest().authenticated() ) .oneTimeTokenLogin((ott) -> ott - .generateTokenUrl("/generateurl") - .generatedOneTimeTokenHandler(new TestGeneratedOneTimeTokenHandler("/redirected")) + .tokenGeneratingUrl("/generateurl") + .tokenGenerationSuccessHandler(new TestOneTimeTokenGenerationSuccessHandler("/redirected")) .loginProcessingUrl("/loginprocessingurl") .authenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/authenticated")) ); @@ -253,7 +253,7 @@ public class OneTimeTokenLoginConfigurerTests { ) .formLogin(Customizer.withDefaults()) .oneTimeTokenLogin((ott) -> ott - .generatedOneTimeTokenHandler(new TestGeneratedOneTimeTokenHandler()) + .tokenGenerationSuccessHandler(new TestOneTimeTokenGenerationSuccessHandler()) ); // @formatter:on return http.build(); @@ -280,18 +280,18 @@ public class OneTimeTokenLoginConfigurerTests { } - static class TestGeneratedOneTimeTokenHandler implements GeneratedOneTimeTokenHandler { + static class TestOneTimeTokenGenerationSuccessHandler implements OneTimeTokenGenerationSuccessHandler { private static OneTimeToken lastToken; - private final GeneratedOneTimeTokenHandler delegate; + private final OneTimeTokenGenerationSuccessHandler delegate; - TestGeneratedOneTimeTokenHandler() { - this.delegate = new RedirectGeneratedOneTimeTokenHandler("/login/ott"); + TestOneTimeTokenGenerationSuccessHandler() { + this.delegate = new RedirectOneTimeTokenGenerationSuccessHandler("/login/ott"); } - TestGeneratedOneTimeTokenHandler(String redirectUrl) { - this.delegate = new RedirectGeneratedOneTimeTokenHandler(redirectUrl); + TestOneTimeTokenGenerationSuccessHandler(String redirectUrl) { + this.delegate = new RedirectOneTimeTokenGenerationSuccessHandler(redirectUrl); } @Override diff --git a/config/src/test/java/org/springframework/security/config/web/server/OneTimeTokenLoginSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/OneTimeTokenLoginSpecTests.java index f3b20e3266..75119e11d0 100644 --- a/config/src/test/java/org/springframework/security/config/web/server/OneTimeTokenLoginSpecTests.java +++ b/config/src/test/java/org/springframework/security/config/web/server/OneTimeTokenLoginSpecTests.java @@ -40,8 +40,8 @@ import org.springframework.security.core.userdetails.User; import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; import org.springframework.security.web.server.SecurityWebFilterChain; import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler; -import org.springframework.security.web.server.authentication.ott.ServerGeneratedOneTimeTokenHandler; -import org.springframework.security.web.server.authentication.ott.ServerRedirectGeneratedOneTimeTokenHandler; +import org.springframework.security.web.server.authentication.ott.ServerOneTimeTokenGenerationSuccessHandler; +import org.springframework.security.web.server.authentication.ott.ServerRedirectOneTimeTokenGenerationSuccessHandler; import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.web.reactive.config.EnableWebFlux; import org.springframework.web.reactive.function.BodyInserters; @@ -107,7 +107,7 @@ public class OneTimeTokenLoginSpecTests { .expectHeader().valueEquals("Location", "/login/ott"); // @formatter:on - String token = TestServerGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestServerOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); // @formatter:off this.client.mutateWith(SecurityMockServerConfigurers.csrf()) @@ -143,7 +143,7 @@ public class OneTimeTokenLoginSpecTests { .expectHeader().valueEquals("Location", "/redirected"); // @formatter:on - String token = TestServerGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestServerOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); // @formatter:off this.client.mutateWith(SecurityMockServerConfigurers.csrf()) @@ -179,7 +179,7 @@ public class OneTimeTokenLoginSpecTests { .expectHeader().valueEquals("Location", "/login/ott"); // @formatter:on - String token = TestServerGeneratedOneTimeTokenHandler.lastToken.getTokenValue(); + String token = TestServerOneTimeTokenGenerationSuccessHandler.lastToken.getTokenValue(); // @formatter:off this.client.mutateWith(SecurityMockServerConfigurers.csrf()) @@ -295,7 +295,7 @@ public class OneTimeTokenLoginSpecTests { .authenticated() ) .oneTimeTokenLogin((ott) -> ott - .generatedOneTimeTokenHandler(new TestServerGeneratedOneTimeTokenHandler()) + .tokenGenerationSuccessHandler(new TestServerOneTimeTokenGenerationSuccessHandler()) ); // @formatter:on return http.build(); @@ -318,8 +318,8 @@ public class OneTimeTokenLoginSpecTests { .authenticated() ) .oneTimeTokenLogin((ott) -> ott - .generateTokenUrl("/generateurl") - .generatedOneTimeTokenHandler(new TestServerGeneratedOneTimeTokenHandler("/redirected")) + .tokenGeneratingUrl("/generateurl") + .tokenGenerationSuccessHandler(new TestServerOneTimeTokenGenerationSuccessHandler("/redirected")) .loginProcessingUrl("/loginprocessingurl") .authenticationSuccessHandler(new RedirectServerAuthenticationSuccessHandler("/authenticated")) ); @@ -345,7 +345,7 @@ public class OneTimeTokenLoginSpecTests { ) .formLogin(Customizer.withDefaults()) .oneTimeTokenLogin((ott) -> ott - .generatedOneTimeTokenHandler(new TestServerGeneratedOneTimeTokenHandler()) + .tokenGenerationSuccessHandler(new TestServerOneTimeTokenGenerationSuccessHandler()) ); // @formatter:on return http.build(); @@ -385,18 +385,19 @@ public class OneTimeTokenLoginSpecTests { } - private static class TestServerGeneratedOneTimeTokenHandler implements ServerGeneratedOneTimeTokenHandler { + private static class TestServerOneTimeTokenGenerationSuccessHandler + implements ServerOneTimeTokenGenerationSuccessHandler { private static OneTimeToken lastToken; - private final ServerGeneratedOneTimeTokenHandler delegate; + private final ServerOneTimeTokenGenerationSuccessHandler delegate; - TestServerGeneratedOneTimeTokenHandler() { - this.delegate = new ServerRedirectGeneratedOneTimeTokenHandler("/login/ott"); + TestServerOneTimeTokenGenerationSuccessHandler() { + this.delegate = new ServerRedirectOneTimeTokenGenerationSuccessHandler("/login/ott"); } - TestServerGeneratedOneTimeTokenHandler(String redirectUrl) { - this.delegate = new ServerRedirectGeneratedOneTimeTokenHandler(redirectUrl); + TestServerOneTimeTokenGenerationSuccessHandler(String redirectUrl) { + this.delegate = new ServerRedirectOneTimeTokenGenerationSuccessHandler(redirectUrl); } @Override diff --git a/config/src/test/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDslTests.kt b/config/src/test/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDslTests.kt index 6f28aa9028..9a019a0cc6 100644 --- a/config/src/test/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDslTests.kt +++ b/config/src/test/kotlin/org/springframework/security/config/annotation/web/OneTimeTokenLoginDslTests.kt @@ -36,8 +36,8 @@ import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequ import org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers import org.springframework.security.web.SecurityFilterChain import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler -import org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler -import org.springframework.security.web.authentication.ott.RedirectGeneratedOneTimeTokenHandler +import org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler +import org.springframework.security.web.authentication.ott.RedirectOneTimeTokenGenerationSuccessHandler import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.request.MockMvcRequestBuilders import org.springframework.test.web.servlet.result.MockMvcResultMatchers @@ -117,7 +117,7 @@ class OneTimeTokenLoginDslTests { authorize(anyRequest, authenticated) } oneTimeTokenLogin { - generatedOneTimeTokenHandler = TestGeneratedOneTimeTokenHandler() + oneTimeTokenGenerationSuccessHandler = TestGeneratedOneTimeTokenHandler() } } // @formatter:on @@ -137,8 +137,8 @@ class OneTimeTokenLoginDslTests { authorize(anyRequest, authenticated) } oneTimeTokenLogin { - generateTokenUrl = "/generateurl" - generatedOneTimeTokenHandler = TestGeneratedOneTimeTokenHandler("/redirected") + tokenGeneratingUrl = "/generateurl" + oneTimeTokenGenerationSuccessHandler = TestGeneratedOneTimeTokenHandler("/redirected") loginProcessingUrl = "/loginprocessingurl" authenticationSuccessHandler = SimpleUrlAuthenticationSuccessHandler("/authenticated") } @@ -156,15 +156,22 @@ class OneTimeTokenLoginDslTests { InMemoryUserDetailsManager(PasswordEncodedUser.user(), PasswordEncodedUser.admin()) } - private class TestGeneratedOneTimeTokenHandler : GeneratedOneTimeTokenHandler { - private val delegate: GeneratedOneTimeTokenHandler + private class TestGeneratedOneTimeTokenHandler : + OneTimeTokenGenerationSuccessHandler { + private val delegate: OneTimeTokenGenerationSuccessHandler constructor() { - this.delegate = RedirectGeneratedOneTimeTokenHandler("/login/ott") + this.delegate = + RedirectOneTimeTokenGenerationSuccessHandler( + "/login/ott" + ) } constructor(redirectUrl: String?) { - this.delegate = RedirectGeneratedOneTimeTokenHandler(redirectUrl) + this.delegate = + RedirectOneTimeTokenGenerationSuccessHandler( + redirectUrl + ) } override fun handle(request: HttpServletRequest, response: HttpServletResponse, oneTimeToken: OneTimeToken) { diff --git a/docs/modules/ROOT/pages/reactive/authentication/onetimetoken.adoc b/docs/modules/ROOT/pages/reactive/authentication/onetimetoken.adoc index 88c01e0c07..1964a1ea79 100644 --- a/docs/modules/ROOT/pages/reactive/authentication/onetimetoken.adoc +++ b/docs/modules/ROOT/pages/reactive/authentication/onetimetoken.adoc @@ -16,7 +16,7 @@ For clarity, we'll assume OTP refers to https://en.wikipedia.org/wiki/Time-based === Token Delivery -- OTT: Usually a custom javadoc:org.springframework.security.web.server.authentication.ott.ServerGeneratedOneTimeTokenHandler[] must be implemented, responsible for delivering the token to the end user. +- OTT: Usually a custom javadoc:org.springframework.security.web.server.authentication.ott.ServerOneTimeTokenGenerationSuccessHandler[] must be implemented, responsible for delivering the token to the end user. - OTP: The token is often generated by an external tool, so there's no need to send it to the user via the application. === Token Generation @@ -49,7 +49,7 @@ It will also set up the javadoc:org.springframework.security.web.server.ui.OneTi == Sending the Token to the User It is not possible for Spring Security to reasonably determine the way the token should be delivered to your users. -Therefore, a custom javadoc:org.springframework.security.web.server.authentication.ott.ServerGeneratedOneTimeTokenHandler[] must be provided to deliver the token to the user based on your needs. +Therefore, a custom javadoc:org.springframework.security.web.server.authentication.ott.ServerOneTimeTokenGenerationSuccessHandler[] must be provided to deliver the token to the user based on your needs. One of the most common delivery strategies is a Magic Link, via e-mail, SMS, etc. In the following example, we are going to create a magic link and sent it to the user's email. @@ -126,7 +126,7 @@ class PageController { <2> Create a login processing URL with the `token` as a query param <3> Retrieve the user's email based on the username <4> Use the `JavaMailSender` API to send the email to the user with the magic link -<5> Use the `ServerRedirectGeneratedOneTimeTokenHandler` to perform a redirect to your desired URL +<5> Use the `ServerRedirectOneTimeTokenGenerationSuccessHandler` to perform a redirect to your desired URL The email content will look similar to: diff --git a/docs/modules/ROOT/pages/servlet/authentication/onetimetoken.adoc b/docs/modules/ROOT/pages/servlet/authentication/onetimetoken.adoc index 5d34d0ba2d..0f389a2ac1 100644 --- a/docs/modules/ROOT/pages/servlet/authentication/onetimetoken.adoc +++ b/docs/modules/ROOT/pages/servlet/authentication/onetimetoken.adoc @@ -16,7 +16,7 @@ For clarity, we'll assume OTP refers to https://en.wikipedia.org/wiki/Time-based === Token Delivery -- OTT: Usually a custom javadoc:org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler[] must be implemented, responsible for delivering the token to the end user. +- OTT: Usually a custom javadoc:org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler[] must be implemented, responsible for delivering the token to the end user. - OTP: The token is often generated by an external tool, so there's no need to send it to the user via the application. === Token Generation @@ -49,7 +49,7 @@ It will also set up the javadoc:org.springframework.security.web.authentication. == Sending the Token to the User It is not possible for Spring Security to reasonably determine the way the token should be delivered to your users. -Therefore, a custom javadoc:org.springframework.security.web.authentication.ott.GeneratedOneTimeTokenHandler[] must be provided to deliver the token to the user based on your needs. +Therefore, a custom javadoc:org.springframework.security.web.authentication.ott.OneTimeTokenGenerationSuccessHandler[] must be provided to deliver the token to the user based on your needs. One of the most common delivery strategies is a Magic Link, via e-mail, SMS, etc. In the following example, we are going to create a magic link and sent it to the user's email. @@ -183,7 +183,7 @@ class PageController { <2> Create a login processing URL with the `token` as a query param <3> Retrieve the user's email based on the username <4> Use the `JavaMailSender` API to send the email to the user with the magic link -<5> Use the `RedirectGeneratedOneTimeTokenHandler` to perform a redirect to your desired URL +<5> Use the `RedirectOneTimeTokenGenerationSuccessHandler` to perform a redirect to your desired URL The email content will look similar to: diff --git a/web/src/main/java/org/springframework/security/web/authentication/ott/GenerateOneTimeTokenFilter.java b/web/src/main/java/org/springframework/security/web/authentication/ott/GenerateOneTimeTokenFilter.java index a6a3133a84..8c9cbf65b6 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/ott/GenerateOneTimeTokenFilter.java +++ b/web/src/main/java/org/springframework/security/web/authentication/ott/GenerateOneTimeTokenFilter.java @@ -43,18 +43,18 @@ import static org.springframework.security.web.util.matcher.AntPathRequestMatche */ public final class GenerateOneTimeTokenFilter extends OncePerRequestFilter { - private final OneTimeTokenService oneTimeTokenService; + private final OneTimeTokenService tokenService; - private final GeneratedOneTimeTokenHandler generatedOneTimeTokenHandler; + private final OneTimeTokenGenerationSuccessHandler tokenGenerationSuccessHandler; private RequestMatcher requestMatcher = antMatcher(HttpMethod.POST, "/ott/generate"); - public GenerateOneTimeTokenFilter(OneTimeTokenService oneTimeTokenService, - GeneratedOneTimeTokenHandler generatedOneTimeTokenHandler) { - Assert.notNull(oneTimeTokenService, "oneTimeTokenService cannot be null"); - Assert.notNull(generatedOneTimeTokenHandler, "generatedOneTimeTokenHandler cannot be null"); - this.oneTimeTokenService = oneTimeTokenService; - this.generatedOneTimeTokenHandler = generatedOneTimeTokenHandler; + public GenerateOneTimeTokenFilter(OneTimeTokenService tokenService, + OneTimeTokenGenerationSuccessHandler tokenGenerationSuccessHandler) { + Assert.notNull(tokenService, "tokenService cannot be null"); + Assert.notNull(tokenGenerationSuccessHandler, "tokenGenerationSuccessHandler cannot be null"); + this.tokenService = tokenService; + this.tokenGenerationSuccessHandler = tokenGenerationSuccessHandler; } @Override @@ -70,8 +70,8 @@ public final class GenerateOneTimeTokenFilter extends OncePerRequestFilter { return; } GenerateOneTimeTokenRequest generateRequest = new GenerateOneTimeTokenRequest(username); - OneTimeToken ott = this.oneTimeTokenService.generate(generateRequest); - this.generatedOneTimeTokenHandler.handle(request, response, ott); + OneTimeToken ott = this.tokenService.generate(generateRequest); + this.tokenGenerationSuccessHandler.handle(request, response, ott); } /** diff --git a/web/src/main/java/org/springframework/security/web/authentication/ott/GeneratedOneTimeTokenHandler.java b/web/src/main/java/org/springframework/security/web/authentication/ott/OneTimeTokenGenerationSuccessHandler.java similarity index 95% rename from web/src/main/java/org/springframework/security/web/authentication/ott/GeneratedOneTimeTokenHandler.java rename to web/src/main/java/org/springframework/security/web/authentication/ott/OneTimeTokenGenerationSuccessHandler.java index 2fb0e24cd3..0738c1100e 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/ott/GeneratedOneTimeTokenHandler.java +++ b/web/src/main/java/org/springframework/security/web/authentication/ott/OneTimeTokenGenerationSuccessHandler.java @@ -31,7 +31,7 @@ import org.springframework.security.authentication.ott.OneTimeToken; * @since 6.4 */ @FunctionalInterface -public interface GeneratedOneTimeTokenHandler { +public interface OneTimeTokenGenerationSuccessHandler { /** * Handles generated one-time tokens diff --git a/web/src/main/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandler.java b/web/src/main/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandler.java similarity index 85% rename from web/src/main/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandler.java rename to web/src/main/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandler.java index c814de8556..c89de21467 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandler.java +++ b/web/src/main/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandler.java @@ -27,12 +27,13 @@ import org.springframework.security.web.RedirectStrategy; import org.springframework.util.Assert; /** - * A {@link GeneratedOneTimeTokenHandler} that performs a redirect to a specific location + * A {@link OneTimeTokenGenerationSuccessHandler} that performs a redirect to a specific + * location * * @author Marcus da Coregio * @since 6.4 */ -public final class RedirectGeneratedOneTimeTokenHandler implements GeneratedOneTimeTokenHandler { +public final class RedirectOneTimeTokenGenerationSuccessHandler implements OneTimeTokenGenerationSuccessHandler { private final RedirectStrategy redirectStrategy = new DefaultRedirectStrategy(); @@ -42,7 +43,7 @@ public final class RedirectGeneratedOneTimeTokenHandler implements GeneratedOneT * Constructs an instance of this class that redirects to the specified URL. * @param redirectUrl */ - public RedirectGeneratedOneTimeTokenHandler(String redirectUrl) { + public RedirectOneTimeTokenGenerationSuccessHandler(String redirectUrl) { Assert.hasText(redirectUrl, "redirectUrl cannot be empty or null"); this.redirectUrl = redirectUrl; } diff --git a/web/src/main/java/org/springframework/security/web/authentication/ui/DefaultLoginPageGeneratingFilter.java b/web/src/main/java/org/springframework/security/web/authentication/ui/DefaultLoginPageGeneratingFilter.java index 4b43a36f76..cc32447956 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/ui/DefaultLoginPageGeneratingFilter.java +++ b/web/src/main/java/org/springframework/security/web/authentication/ui/DefaultLoginPageGeneratingFilter.java @@ -157,7 +157,7 @@ public class DefaultLoginPageGeneratingFilter extends GenericFilterBean { this.authenticationUrl = authenticationUrl; } - public void setGenerateOneTimeTokenUrl(String generateOneTimeTokenUrl) { + public void setOneTimeTokenGenerationUrl(String generateOneTimeTokenUrl) { this.generateOneTimeTokenUrl = generateOneTimeTokenUrl; } diff --git a/web/src/main/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilter.java b/web/src/main/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilter.java index 18f95f030a..19545d75c2 100644 --- a/web/src/main/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilter.java +++ b/web/src/main/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilter.java @@ -43,10 +43,10 @@ public final class GenerateOneTimeTokenWebFilter implements WebFilter { private ServerWebExchangeMatcher matcher = ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, "/ott/generate"); - private final ServerGeneratedOneTimeTokenHandler generatedOneTimeTokenHandler; + private final ServerOneTimeTokenGenerationSuccessHandler generatedOneTimeTokenHandler; public GenerateOneTimeTokenWebFilter(ReactiveOneTimeTokenService oneTimeTokenService, - ServerGeneratedOneTimeTokenHandler generatedOneTimeTokenHandler) { + ServerOneTimeTokenGenerationSuccessHandler generatedOneTimeTokenHandler) { Assert.notNull(generatedOneTimeTokenHandler, "generatedOneTimeTokenHandler cannot be null"); Assert.notNull(oneTimeTokenService, "oneTimeTokenService cannot be null"); this.generatedOneTimeTokenHandler = generatedOneTimeTokenHandler; diff --git a/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerGeneratedOneTimeTokenHandler.java b/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerOneTimeTokenGenerationSuccessHandler.java similarity index 95% rename from web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerGeneratedOneTimeTokenHandler.java rename to web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerOneTimeTokenGenerationSuccessHandler.java index 5a461ddf58..55009f195a 100644 --- a/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerGeneratedOneTimeTokenHandler.java +++ b/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerOneTimeTokenGenerationSuccessHandler.java @@ -28,7 +28,7 @@ import org.springframework.web.server.ServerWebExchange; * @since 6.4 */ @FunctionalInterface -public interface ServerGeneratedOneTimeTokenHandler { +public interface ServerOneTimeTokenGenerationSuccessHandler { /** * Handles generated one-time tokens diff --git a/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandler.java b/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandler.java similarity index 82% rename from web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandler.java rename to web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandler.java index b98f913031..3800fb1d20 100644 --- a/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandler.java +++ b/web/src/main/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandler.java @@ -27,19 +27,20 @@ import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; /** - * A {@link ServerGeneratedOneTimeTokenHandler} that performs a redirect to a specific - * location + * A {@link ServerOneTimeTokenGenerationSuccessHandler} that performs a redirect to a + * specific location * * @author Max Batischev * @since 6.4 */ -public final class ServerRedirectGeneratedOneTimeTokenHandler implements ServerGeneratedOneTimeTokenHandler { +public final class ServerRedirectOneTimeTokenGenerationSuccessHandler + implements ServerOneTimeTokenGenerationSuccessHandler { private final ServerRedirectStrategy redirectStrategy = new DefaultServerRedirectStrategy(); private final URI redirectUri; - public ServerRedirectGeneratedOneTimeTokenHandler(String redirectUri) { + public ServerRedirectOneTimeTokenGenerationSuccessHandler(String redirectUri) { Assert.hasText(redirectUri, "redirectUri cannot be empty or null"); this.redirectUri = URI.create(redirectUri); } diff --git a/web/src/test/java/org/springframework/security/web/authentication/DefaultLoginPageGeneratingFilterTests.java b/web/src/test/java/org/springframework/security/web/authentication/DefaultLoginPageGeneratingFilterTests.java index b56bff25a7..a3b62830d6 100644 --- a/web/src/test/java/org/springframework/security/web/authentication/DefaultLoginPageGeneratingFilterTests.java +++ b/web/src/test/java/org/springframework/security/web/authentication/DefaultLoginPageGeneratingFilterTests.java @@ -192,7 +192,7 @@ public class DefaultLoginPageGeneratingFilterTests { DefaultLoginPageGeneratingFilter filter = new DefaultLoginPageGeneratingFilter(); filter.setLoginPageUrl(DefaultLoginPageGeneratingFilter.DEFAULT_LOGIN_PAGE_URL); filter.setOneTimeTokenEnabled(true); - filter.setGenerateOneTimeTokenUrl("/ott/authenticate"); + filter.setOneTimeTokenGenerationUrl("/ott/authenticate"); MockHttpServletResponse response = new MockHttpServletResponse(); filter.doFilter(new MockHttpServletRequest("GET", "/login"), response, this.chain); assertThat(response.getContentAsString()).contains("Request a One-Time Token"); diff --git a/web/src/test/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandlerTests.java b/web/src/test/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandlerTests.java similarity index 81% rename from web/src/test/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandlerTests.java rename to web/src/test/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandlerTests.java index 1316ee3151..38d95ca997 100644 --- a/web/src/test/java/org/springframework/security/web/authentication/ott/RedirectGeneratedOneTimeTokenHandlerTests.java +++ b/web/src/test/java/org/springframework/security/web/authentication/ott/RedirectOneTimeTokenGenerationSuccessHandlerTests.java @@ -29,15 +29,16 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; /** - * Tests for {@link RedirectGeneratedOneTimeTokenHandler} + * Tests for {@link RedirectOneTimeTokenGenerationSuccessHandler} * * @author Marcus da Coregio */ -class RedirectGeneratedOneTimeTokenHandlerTests { +class RedirectOneTimeTokenGenerationSuccessHandlerTests { @Test void handleThenRedirectToDefaultLocation() throws IOException { - RedirectGeneratedOneTimeTokenHandler handler = new RedirectGeneratedOneTimeTokenHandler("/login/ott"); + RedirectOneTimeTokenGenerationSuccessHandler handler = new RedirectOneTimeTokenGenerationSuccessHandler( + "/login/ott"); MockHttpServletResponse response = new MockHttpServletResponse(); handler.handle(new MockHttpServletRequest(), response, new DefaultOneTimeToken("token", "user", Instant.now())); assertThat(response.getRedirectedUrl()).isEqualTo("/login/ott"); @@ -46,16 +47,17 @@ class RedirectGeneratedOneTimeTokenHandlerTests { @Test void handleWhenUrlChangedThenRedirectToUrl() throws IOException { MockHttpServletResponse response = new MockHttpServletResponse(); - RedirectGeneratedOneTimeTokenHandler handler = new RedirectGeneratedOneTimeTokenHandler("/redirected"); + RedirectOneTimeTokenGenerationSuccessHandler handler = new RedirectOneTimeTokenGenerationSuccessHandler( + "/redirected"); handler.handle(new MockHttpServletRequest(), response, new DefaultOneTimeToken("token", "user", Instant.now())); assertThat(response.getRedirectedUrl()).isEqualTo("/redirected"); } @Test void setRedirectUrlWhenNullOrEmptyThenException() { - assertThatIllegalArgumentException().isThrownBy(() -> new RedirectGeneratedOneTimeTokenHandler(null)) + assertThatIllegalArgumentException().isThrownBy(() -> new RedirectOneTimeTokenGenerationSuccessHandler(null)) .withMessage("redirectUrl cannot be empty or null"); - assertThatIllegalArgumentException().isThrownBy(() -> new RedirectGeneratedOneTimeTokenHandler("")) + assertThatIllegalArgumentException().isThrownBy(() -> new RedirectOneTimeTokenGenerationSuccessHandler("")) .withMessage("redirectUrl cannot be empty or null"); } diff --git a/web/src/test/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilterTests.java b/web/src/test/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilterTests.java index 3436fc6503..434ec74ddd 100644 --- a/web/src/test/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilterTests.java +++ b/web/src/test/java/org/springframework/security/web/server/authentication/ott/GenerateOneTimeTokenWebFilterTests.java @@ -45,7 +45,7 @@ public class GenerateOneTimeTokenWebFilterTests { private final ReactiveOneTimeTokenService oneTimeTokenService = mock(ReactiveOneTimeTokenService.class); - private final ServerRedirectGeneratedOneTimeTokenHandler generatedOneTimeTokenHandler = new ServerRedirectGeneratedOneTimeTokenHandler( + private final ServerRedirectOneTimeTokenGenerationSuccessHandler generatedOneTimeTokenHandler = new ServerRedirectOneTimeTokenGenerationSuccessHandler( "/login/ott"); private static final String TOKEN = "token"; diff --git a/web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandlerTests.java b/web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandlerTests.java similarity index 78% rename from web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandlerTests.java rename to web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandlerTests.java index 41a412e5df..a6a49691e7 100644 --- a/web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectGeneratedOneTimeTokenHandlerTests.java +++ b/web/src/test/java/org/springframework/security/web/server/authentication/ott/ServerRedirectOneTimeTokenGenerationSuccessHandlerTests.java @@ -29,11 +29,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; /** - * Tests for {@link ServerRedirectGeneratedOneTimeTokenHandler} + * Tests for {@link ServerRedirectOneTimeTokenGenerationSuccessHandler} * * @author Max Batischev */ -public class ServerRedirectGeneratedOneTimeTokenHandlerTests { +public class ServerRedirectOneTimeTokenGenerationSuccessHandlerTests { private static final String TOKEN = "token"; @@ -43,7 +43,8 @@ public class ServerRedirectGeneratedOneTimeTokenHandlerTests { @Test void handleThenRedirectToDefaultLocation() { - ServerGeneratedOneTimeTokenHandler handler = new ServerRedirectGeneratedOneTimeTokenHandler("/login/ott"); + ServerOneTimeTokenGenerationSuccessHandler handler = new ServerRedirectOneTimeTokenGenerationSuccessHandler( + "/login/ott"); MockServerWebExchange webExchange = MockServerWebExchange.from(this.request); handler.handle(webExchange, new DefaultOneTimeToken(TOKEN, USERNAME, Instant.now())).block(); @@ -54,7 +55,8 @@ public class ServerRedirectGeneratedOneTimeTokenHandlerTests { @Test void handleWhenUrlChangedThenRedirectToUrl() { - ServerGeneratedOneTimeTokenHandler handler = new ServerRedirectGeneratedOneTimeTokenHandler("/redirected"); + ServerOneTimeTokenGenerationSuccessHandler handler = new ServerRedirectOneTimeTokenGenerationSuccessHandler( + "/redirected"); MockServerWebExchange webExchange = MockServerWebExchange.from(this.request); handler.handle(webExchange, new DefaultOneTimeToken(TOKEN, USERNAME, Instant.now())).block(); @@ -65,9 +67,11 @@ public class ServerRedirectGeneratedOneTimeTokenHandlerTests { @Test void setRedirectUrlWhenNullOrEmptyThenException() { - assertThatIllegalArgumentException().isThrownBy(() -> new ServerRedirectGeneratedOneTimeTokenHandler(null)) + assertThatIllegalArgumentException() + .isThrownBy(() -> new ServerRedirectOneTimeTokenGenerationSuccessHandler(null)) .withMessage("redirectUri cannot be empty or null"); - assertThatIllegalArgumentException().isThrownBy(() -> new ServerRedirectGeneratedOneTimeTokenHandler("")) + assertThatIllegalArgumentException() + .isThrownBy(() -> new ServerRedirectOneTimeTokenGenerationSuccessHandler("")) .withMessage("redirectUri cannot be empty or null"); }