Skip to content

Commit 0cd9909

Browse files
Add support for One-Time Token Authentication
Closes spring-projectsgh-15114
1 parent 14fb62f commit 0cd9909

File tree

29 files changed

+2104
-1
lines changed

29 files changed

+2104
-1
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/HttpSecurityBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.security.web.authentication.AnonymousAuthenticationFilter;
3333
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
3434
import org.springframework.security.web.authentication.logout.LogoutFilter;
35+
import org.springframework.security.web.authentication.ott.OneTimeTokenAuthenticationFilter;
3536
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
3637
import org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter;
3738
import org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter;
@@ -150,6 +151,7 @@ public interface HttpSecurityBuilder<H extends HttpSecurityBuilder<H>>
150151
* {@docRoot}/org/springframework/security/cas/web/CasAuthenticationFilter.html">CasAuthenticationFilter</a></li>
151152
* <li>{@link org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter}</li>
152153
* <li>{@link org.springframework.security.saml2.provider.service.web.authentication.Saml2WebSsoAuthenticationFilter}</li>
154+
* <li>{@link OneTimeTokenAuthenticationFilter}</li>
153155
* <li>{@link UsernamePasswordAuthenticationFilter}</li>
154156
* <li>{@link org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter}</li>
155157
* <li>{@link org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter}</li>

config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,15 @@
2929
import org.springframework.security.web.authentication.AnonymousAuthenticationFilter;
3030
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
3131
import org.springframework.security.web.authentication.logout.LogoutFilter;
32+
import org.springframework.security.web.authentication.ott.OneTimeTokenAuthenticationFilter;
33+
import org.springframework.security.web.authentication.ott.OneTimeTokenAuthenticationRequestFilter;
3234
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
3335
import org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter;
3436
import org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter;
3537
import org.springframework.security.web.authentication.switchuser.SwitchUserFilter;
3638
import org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter;
3739
import org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter;
40+
import org.springframework.security.web.authentication.ui.DefaultOneTimeTokenSubmitPageGeneratingFilter;
3841
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
3942
import org.springframework.security.web.authentication.www.DigestAuthenticationFilter;
4043
import org.springframework.security.web.context.SecurityContextHolderFilter;
@@ -87,6 +90,7 @@ final class FilterOrderRegistration {
8790
this.filterToOrder.put(
8891
"org.springframework.security.saml2.provider.service.web.Saml2WebSsoAuthenticationRequestFilter",
8992
order.next());
93+
put(OneTimeTokenAuthenticationRequestFilter.class, order.next());
9094
put(X509AuthenticationFilter.class, order.next());
9195
put(AbstractPreAuthenticatedProcessingFilter.class, order.next());
9296
this.filterToOrder.put("org.springframework.security.cas.web.CasAuthenticationFilter", order.next());
@@ -95,10 +99,12 @@ final class FilterOrderRegistration {
9599
this.filterToOrder.put(
96100
"org.springframework.security.saml2.provider.service.web.authentication.Saml2WebSsoAuthenticationFilter",
97101
order.next());
102+
put(OneTimeTokenAuthenticationFilter.class, order.next());
98103
put(UsernamePasswordAuthenticationFilter.class, order.next());
99104
order.next(); // gh-8105
100105
put(DefaultLoginPageGeneratingFilter.class, order.next());
101106
put(DefaultLogoutPageGeneratingFilter.class, order.next());
107+
put(DefaultOneTimeTokenSubmitPageGeneratingFilter.class, order.next());
102108
put(ConcurrentSessionFilter.class, order.next());
103109
put(DigestAuthenticationFilter.class, order.next());
104110
this.filterToOrder.put(

config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2023 the original author or authors.
2+
* Copyright 2002-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -72,6 +72,7 @@
7272
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2LoginConfigurer;
7373
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OidcLogoutConfigurer;
7474
import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer;
75+
import org.springframework.security.config.annotation.web.configurers.ott.OneTimeTokenLoginConfigurer;
7576
import org.springframework.security.config.annotation.web.configurers.saml2.Saml2LoginConfigurer;
7677
import org.springframework.security.config.annotation.web.configurers.saml2.Saml2LogoutConfigurer;
7778
import org.springframework.security.config.annotation.web.configurers.saml2.Saml2MetadataConfigurer;
@@ -2978,6 +2979,13 @@ public HttpSecurity oauth2ResourceServer(
29782979
return HttpSecurity.this;
29792980
}
29802981

2982+
public HttpSecurity oneTimeTokenLogin(
2983+
Customizer<OneTimeTokenLoginConfigurer<HttpSecurity>> oneTimeTokenLoginConfigurerCustomizer)
2984+
throws Exception {
2985+
oneTimeTokenLoginConfigurerCustomizer.customize(getOrApply(new OneTimeTokenLoginConfigurer<>(getContext())));
2986+
return HttpSecurity.this;
2987+
}
2988+
29812989
/**
29822990
* Configures channel security. In order for this configuration to be useful at least
29832991
* one mapping to a required channel must be provided.

0 commit comments

Comments
 (0)