Skip to content

Commit 179f7f8

Browse files
committed
Support AuthenticationManager Post-Processing
Oftentimes, a filter has its own authentication manager or it has something specific that it needs to do regarding authentication that is independent of a shared authentication manager. Allowing the authentication manager to be post-processed allows an application to apply authentication-mechanism-specific post-processing to the authentication request and result.
1 parent df3080b commit 179f7f8

File tree

5 files changed

+8
-5
lines changed

5 files changed

+8
-5
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/configurers/AbstractAuthenticationFilterConfigurer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ public void configure(B http) throws Exception {
282282
if (requestCache != null) {
283283
this.defaultSuccessHandler.setRequestCache(requestCache);
284284
}
285-
this.authFilter.setAuthenticationManager(http.getSharedObject(AuthenticationManager.class));
285+
this.authFilter.setAuthenticationManager(postProcess(http.getSharedObject(AuthenticationManager.class)));
286286
this.authFilter.setAuthenticationSuccessHandler(this.successHandler);
287287
this.authFilter.setAuthenticationFailureHandler(this.failureHandler);
288288
if (this.authenticationDetailsSource != null) {

config/src/main/java/org/springframework/security/config/annotation/web/configurers/HttpBasicConfigurer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ private void registerDefaultLogoutSuccessHandler(B http, RequestMatcher preferre
207207

208208
@Override
209209
public void configure(B http) {
210-
AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class);
210+
AuthenticationManager authenticationManager = postProcess(http.getSharedObject(AuthenticationManager.class));
211211
BasicAuthenticationFilter basicAuthenticationFilter = new BasicAuthenticationFilter(authenticationManager,
212212
this.authenticationEntryPoint);
213213
if (this.authenticationDetailsSource != null) {

config/src/main/java/org/springframework/security/config/annotation/web/configurers/WebAuthnConfigurer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2525
import org.springframework.context.ApplicationContext;
2626
import org.springframework.http.converter.HttpMessageConverter;
27+
import org.springframework.security.authentication.AuthenticationManager;
2728
import org.springframework.security.authentication.ProviderManager;
2829
import org.springframework.security.config.annotation.web.HttpSecurityBuilder;
2930
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -162,8 +163,9 @@ public void configure(H http) throws Exception {
162163
WebAuthnRelyingPartyOperations rpOperations = webAuthnRelyingPartyOperations(userEntities, userCredentials);
163164
PublicKeyCredentialCreationOptionsRepository creationOptionsRepository = creationOptionsRepository();
164165
WebAuthnAuthenticationFilter webAuthnAuthnFilter = new WebAuthnAuthenticationFilter();
165-
webAuthnAuthnFilter.setAuthenticationManager(
166+
AuthenticationManager authenticationManager = postProcess(
166167
new ProviderManager(new WebAuthnAuthenticationProvider(rpOperations, userDetailsService)));
168+
webAuthnAuthnFilter.setAuthenticationManager(authenticationManager);
167169
WebAuthnRegistrationFilter webAuthnRegistrationFilter = new WebAuthnRegistrationFilter(userCredentials,
168170
rpOperations);
169171
PublicKeyCredentialCreationOptionsFilter creationOptionsFilter = new PublicKeyCredentialCreationOptionsFilter(

config/src/main/java/org/springframework/security/config/annotation/web/configurers/X509Configurer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ public void init(H http) {
183183

184184
@Override
185185
public void configure(H http) {
186-
X509AuthenticationFilter filter = getFilter(http.getSharedObject(AuthenticationManager.class), http);
186+
AuthenticationManager authenticationManager = postProcess(http.getSharedObject(AuthenticationManager.class));
187+
X509AuthenticationFilter filter = getFilter(authenticationManager, http);
187188
http.addFilter(filter);
188189
}
189190

config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/resource/OAuth2ResourceServerConfigurer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public void init(H http) {
265265
public void configure(H http) {
266266
AuthenticationManagerResolver resolver = this.authenticationManagerResolver;
267267
if (resolver == null) {
268-
AuthenticationManager authenticationManager = getAuthenticationManager(http);
268+
AuthenticationManager authenticationManager = postProcess(getAuthenticationManager(http));
269269
resolver = (request) -> authenticationManager;
270270
}
271271

0 commit comments

Comments
 (0)