diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java b/config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java index ac22562cd4..e46c5202e4 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java @@ -1000,7 +1000,9 @@ public final class HttpSecurity extends * @throws Exception */ public OAuth2Configurer oauth2() throws Exception { - return getOrApply(new OAuth2Configurer<>()); + OAuth2Configurer configurer = getOrApply(new OAuth2Configurer<>()); + this.postProcess(configurer); + return configurer; } /** diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/OAuth2Configurer.java b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/OAuth2Configurer.java index a1cba10d99..57d42deb2c 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/OAuth2Configurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/OAuth2Configurer.java @@ -15,6 +15,7 @@ */ package org.springframework.security.config.annotation.web.configurers.oauth2; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.config.annotation.ObjectPostProcessor; import org.springframework.security.config.annotation.web.HttpSecurityBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; @@ -34,49 +35,40 @@ import org.springframework.security.config.annotation.web.configurers.oauth2.cli public final class OAuth2Configurer> extends AbstractHttpConfigurer, B> { - private final OAuth2ClientConfigurer clientConfigurer = new OAuth2ClientConfigurer<>(); - private boolean clientEnabled; + @Autowired + private ObjectPostProcessor objectPostProcessor; + + private OAuth2ClientConfigurer clientConfigurer; /** * Returns the {@link OAuth2ClientConfigurer} for configuring OAuth 2.0 Client support. * * @return the {@link OAuth2ClientConfigurer} - * @throws Exception */ - public OAuth2ClientConfigurer client() throws Exception { - this.clientEnabled = true; + public OAuth2ClientConfigurer client() { + if (this.clientConfigurer == null) { + this.initClientConfigurer(); + } return this.clientConfigurer; } @Override public void init(B builder) throws Exception { - if (this.clientEnabled) { + if (this.clientConfigurer != null) { this.clientConfigurer.init(builder); } } @Override public void configure(B builder) throws Exception { - if (this.clientEnabled) { + if (this.clientConfigurer != null) { this.clientConfigurer.configure(builder); } } - @Override - public void setBuilder(B builder) { - this.clientConfigurer.setBuilder(builder); - super.setBuilder(builder); - } - - @Override - public void addObjectPostProcessor(ObjectPostProcessor objectPostProcessor) { - this.clientConfigurer.addObjectPostProcessor(objectPostProcessor); - super.addObjectPostProcessor(objectPostProcessor); - } - - @Override - public OAuth2Configurer withObjectPostProcessor(ObjectPostProcessor objectPostProcessor) { - this.clientConfigurer.withObjectPostProcessor(objectPostProcessor); - return super.withObjectPostProcessor(objectPostProcessor); + private void initClientConfigurer() { + this.clientConfigurer = new OAuth2ClientConfigurer<>(); + this.clientConfigurer.setBuilder(this.getBuilder()); + this.clientConfigurer.addObjectPostProcessor(this.objectPostProcessor); } }