@ -18,7 +18,6 @@ package org.springframework.security.config.annotation.web.configurers.ott;
@@ -18,7 +18,6 @@ package org.springframework.security.config.annotation.web.configurers.ott;
import java.util.Collections ;
import java.util.Map ;
import java.util.Objects ;
import jakarta.servlet.http.HttpServletRequest ;
@ -91,7 +90,7 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
@@ -91,7 +90,7 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
@Override
public void init ( H http ) {
AuthenticationProvider authenticationProvider = getAuthenticationProvider ( http ) ;
AuthenticationProvider authenticationProvider = getAuthenticationProvider ( ) ;
http . authenticationProvider ( postProcess ( authenticationProvider ) ) ;
configureDefaultLoginPage ( http ) ;
}
@ -138,17 +137,19 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
@@ -138,17 +137,19 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
}
private void configureOttGenerateFilter ( H http ) {
GenerateOneTimeTokenFilter generateFilter = new GenerateOneTimeTokenFilter ( getOneTimeTokenService ( http ) ,
getOneTimeTokenGenerationSuccessHandler ( http ) ) ;
GenerateOneTimeTokenFilter generateFilter = new GenerateOneTimeTokenFilter ( getOneTimeTokenService ( ) ,
getOneTimeTokenGenerationSuccessHandler ( ) ) ;
generateFilter . setRequestMatcher ( antMatcher ( HttpMethod . POST , this . tokenGeneratingUrl ) ) ;
generateFilter . setRequestResolver ( getGenerateRequestResolver ( http ) ) ;
generateFilter . setRequestResolver ( getGenerateRequestResolver ( ) ) ;
http . addFilter ( postProcess ( generateFilter ) ) ;
http . addFilter ( DefaultResourcesFilter . css ( ) ) ;
}
private OneTimeTokenGenerationSuccessHandler getOneTimeTokenGenerationSuccessHandler ( H http ) {
private OneTimeTokenGenerationSuccessHandler getOneTimeTokenGenerationSuccessHandler ( ) {
if ( this . oneTimeTokenGenerationSuccessHandler = = null ) {
this . oneTimeTokenGenerationSuccessHandler = getBeanOrNull ( http , OneTimeTokenGenerationSuccessHandler . class ) ;
this . oneTimeTokenGenerationSuccessHandler = this . context
. getBeanProvider ( OneTimeTokenGenerationSuccessHandler . class )
. getIfUnique ( ) ;
}
if ( this . oneTimeTokenGenerationSuccessHandler = = null ) {
throw new IllegalStateException ( "" "
@ -170,12 +171,12 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
@@ -170,12 +171,12 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
http . addFilter ( postProcess ( submitPage ) ) ;
}
private AuthenticationProvider getAuthenticationProvider ( H http ) {
private AuthenticationProvider getAuthenticationProvider ( ) {
if ( this . authenticationProvider ! = null ) {
return this . authenticationProvider ;
}
UserDetailsService userDetailsService = getContext ( ) . getBean ( UserDetailsService . class ) ;
this . authenticationProvider = new OneTimeTokenAuthenticationProvider ( getOneTimeTokenService ( http ) ,
UserDetailsService userDetailsService = this . context . getBean ( UserDetailsService . class ) ;
this . authenticationProvider = new OneTimeTokenAuthenticationProvider ( getOneTimeTokenService ( ) ,
userDetailsService ) ;
return this . authenticationProvider ;
}
@ -321,44 +322,34 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
@@ -321,44 +322,34 @@ public final class OneTimeTokenLoginConfigurer<H extends HttpSecurityBuilder<H>>
return this ;
}
private GenerateOneTimeTokenRequestResolver getGenerateRequestResolver ( H http ) {
private GenerateOneTimeTokenRequestResolver getGenerateRequestResolver ( ) {
if ( this . requestResolver ! = null ) {
return this . requestResolver ;
}
GenerateOneTimeTokenRequestResolver bean = getBeanOrNull ( http , GenerateOneTimeTokenRequestResolver . class ) ;
this . requestResolver = Objects . requireNonNullElseGet ( bean , DefaultGenerateOneTimeTokenRequestResolver : : new ) ;
this . requestResolver = this . context . getBeanProvider ( GenerateOneTimeTokenRequestResolver . class )
. getIfUnique ( DefaultGenerateOneTimeTokenRequestResolver : : new ) ;
return this . requestResolver ;
}
private OneTimeTokenService getOneTimeTokenService ( H http ) {
private OneTimeTokenService getOneTimeTokenService ( ) {
if ( this . oneTimeTokenService ! = null ) {
return this . oneTimeTokenService ;
}
OneTimeTokenService bean = getBeanOrNull ( http , OneTimeTokenService . class ) ;
if ( bean ! = null ) {
this . oneTimeTokenService = bean ;
}
else {
this . oneTimeTokenService = new InMemoryOneTimeTokenService ( ) ;
}
this . oneTimeTokenService = this . context . getBeanProvider ( OneTimeTokenService . class )
. getIfUnique ( InMemoryOneTimeTokenService : : new ) ;
return this . oneTimeTokenService ;
}
private < C > C getBeanOrNull ( H http , Class < C > clazz ) {
ApplicationContext context = http . getSharedObject ( ApplicationContext . class ) ;
if ( context = = null ) {
return null ;
}
return context . getBeanProvider ( clazz ) . getIfUnique ( ) ;
}
private Map < String , String > hiddenInputs ( HttpServletRequest request ) {
CsrfToken token = ( CsrfToken ) request . getAttribute ( CsrfToken . class . getName ( ) ) ;
return ( token ! = null ) ? Collections . singletonMap ( token . getParameterName ( ) , token . getToken ( ) )
: Collections . emptyMap ( ) ;
}
/ * *
* @deprecated Use this . context instead
* /
@Deprecated
public ApplicationContext getContext ( ) {
return this . context ;
}