|
@@ -251,11 +251,12 @@ final class AuthenticationConfigBuilder {
|
|
|
createAnonymousFilter(authenticationFilterSecurityContextHolderStrategyRef);
|
|
|
createRememberMeFilter(authenticationManager);
|
|
|
createBasicFilter(authenticationManager, authenticationFilterSecurityContextHolderStrategyRef);
|
|
|
- createBearerTokenAuthenticationFilter(authenticationManager);
|
|
|
+ createBearerTokenAuthenticationFilter(authenticationManager,
|
|
|
+ authenticationFilterSecurityContextHolderStrategyRef);
|
|
|
createFormLoginFilter(sessionStrategy, authenticationManager,
|
|
|
authenticationFilterSecurityContextHolderStrategyRef, authenticationFilterSecurityContextRepositoryRef);
|
|
|
createOAuth2ClientFilters(sessionStrategy, requestCache, authenticationManager,
|
|
|
- authenticationFilterSecurityContextRepositoryRef);
|
|
|
+ authenticationFilterSecurityContextRepositoryRef, authenticationFilterSecurityContextHolderStrategyRef);
|
|
|
createOpenIDLoginFilter(sessionStrategy, authenticationManager,
|
|
|
authenticationFilterSecurityContextRepositoryRef);
|
|
|
createSaml2LoginFilter(authenticationManager, authenticationFilterSecurityContextRepositoryRef);
|
|
@@ -326,22 +327,26 @@ final class AuthenticationConfigBuilder {
|
|
|
}
|
|
|
|
|
|
void createOAuth2ClientFilters(BeanReference sessionStrategy, BeanReference requestCache,
|
|
|
- BeanReference authenticationManager, BeanReference authenticationFilterSecurityContextRepositoryRef) {
|
|
|
+ BeanReference authenticationManager, BeanReference authenticationFilterSecurityContextRepositoryRef,
|
|
|
+ BeanMetadataElement authenticationFilterSecurityContextHolderStrategy) {
|
|
|
createOAuth2LoginFilter(sessionStrategy, authenticationManager,
|
|
|
- authenticationFilterSecurityContextRepositoryRef);
|
|
|
- createOAuth2ClientFilter(requestCache, authenticationManager, authenticationFilterSecurityContextRepositoryRef);
|
|
|
+ authenticationFilterSecurityContextRepositoryRef, authenticationFilterSecurityContextHolderStrategy);
|
|
|
+ createOAuth2ClientFilter(requestCache, authenticationManager, authenticationFilterSecurityContextRepositoryRef,
|
|
|
+ authenticationFilterSecurityContextHolderStrategy);
|
|
|
registerOAuth2ClientPostProcessors();
|
|
|
}
|
|
|
|
|
|
void createOAuth2LoginFilter(BeanReference sessionStrategy, BeanReference authManager,
|
|
|
- BeanReference authenticationFilterSecurityContextRepositoryRef) {
|
|
|
+ BeanReference authenticationFilterSecurityContextRepositoryRef,
|
|
|
+ BeanMetadataElement authenticationFilterSecurityContextHolderStrategy) {
|
|
|
Element oauth2LoginElt = DomUtils.getChildElementByTagName(this.httpElt, Elements.OAUTH2_LOGIN);
|
|
|
if (oauth2LoginElt == null) {
|
|
|
return;
|
|
|
}
|
|
|
this.oauth2LoginEnabled = true;
|
|
|
OAuth2LoginBeanDefinitionParser parser = new OAuth2LoginBeanDefinitionParser(this.requestCache, this.portMapper,
|
|
|
- this.portResolver, sessionStrategy, this.allowSessionCreation);
|
|
|
+ this.portResolver, sessionStrategy, this.allowSessionCreation,
|
|
|
+ authenticationFilterSecurityContextHolderStrategy);
|
|
|
BeanDefinition oauth2LoginFilterBean = parser.parse(oauth2LoginElt, this.pc);
|
|
|
BeanDefinition defaultAuthorizedClientRepository = parser.getDefaultAuthorizedClientRepository();
|
|
|
registerDefaultAuthorizedClientRepositoryIfNecessary(defaultAuthorizedClientRepository);
|
|
@@ -380,14 +385,16 @@ final class AuthenticationConfigBuilder {
|
|
|
}
|
|
|
|
|
|
void createOAuth2ClientFilter(BeanReference requestCache, BeanReference authenticationManager,
|
|
|
- BeanReference authenticationFilterSecurityContextRepositoryRef) {
|
|
|
+ BeanReference authenticationFilterSecurityContextRepositoryRef,
|
|
|
+ BeanMetadataElement authenticationFilterSecurityContextHolderStrategy) {
|
|
|
Element oauth2ClientElt = DomUtils.getChildElementByTagName(this.httpElt, Elements.OAUTH2_CLIENT);
|
|
|
if (oauth2ClientElt == null) {
|
|
|
return;
|
|
|
}
|
|
|
this.oauth2ClientEnabled = true;
|
|
|
OAuth2ClientBeanDefinitionParser parser = new OAuth2ClientBeanDefinitionParser(requestCache,
|
|
|
- authenticationManager, authenticationFilterSecurityContextRepositoryRef);
|
|
|
+ authenticationManager, authenticationFilterSecurityContextRepositoryRef,
|
|
|
+ authenticationFilterSecurityContextHolderStrategy);
|
|
|
parser.parse(oauth2ClientElt, this.pc);
|
|
|
BeanDefinition defaultAuthorizedClientRepository = parser.getDefaultAuthorizedClientRepository();
|
|
|
registerDefaultAuthorizedClientRepositoryIfNecessary(defaultAuthorizedClientRepository);
|
|
@@ -603,7 +610,8 @@ final class AuthenticationConfigBuilder {
|
|
|
this.basicFilter = filterBuilder.getBeanDefinition();
|
|
|
}
|
|
|
|
|
|
- void createBearerTokenAuthenticationFilter(BeanReference authManager) {
|
|
|
+ void createBearerTokenAuthenticationFilter(BeanReference authManager,
|
|
|
+ BeanMetadataElement authenticationFilterSecurityContextHolderStrategyRef) {
|
|
|
Element resourceServerElt = DomUtils.getChildElementByTagName(this.httpElt, Elements.OAUTH2_RESOURCE_SERVER);
|
|
|
if (resourceServerElt == null) {
|
|
|
// No resource server, do nothing
|
|
@@ -611,7 +619,8 @@ final class AuthenticationConfigBuilder {
|
|
|
}
|
|
|
OAuth2ResourceServerBeanDefinitionParser resourceServerBuilder = new OAuth2ResourceServerBeanDefinitionParser(
|
|
|
authManager, this.authenticationProviders, this.defaultEntryPointMappings,
|
|
|
- this.defaultDeniedHandlerMappings, this.csrfIgnoreRequestMatchers);
|
|
|
+ this.defaultDeniedHandlerMappings, this.csrfIgnoreRequestMatchers,
|
|
|
+ authenticationFilterSecurityContextHolderStrategyRef);
|
|
|
this.bearerTokenAuthenticationFilter = resourceServerBuilder.parse(resourceServerElt, this.pc);
|
|
|
}
|
|
|
|