|
@@ -15,6 +15,8 @@
|
|
|
*/
|
|
|
package org.springframework.security.config.annotation.web.configurers.oauth2;
|
|
|
|
|
|
+import org.springframework.security.config.annotation.ObjectPostProcessor;
|
|
|
+import org.springframework.security.config.annotation.web.HttpSecurityBuilder;
|
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
|
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
|
|
|
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2ClientConfigurer;
|
|
@@ -29,7 +31,11 @@ import org.springframework.security.config.annotation.web.configurers.oauth2.cli
|
|
|
* @see OAuth2ClientConfigurer
|
|
|
* @see AbstractHttpConfigurer
|
|
|
*/
|
|
|
-public final class OAuth2Configurer extends AbstractHttpConfigurer<OAuth2Configurer, HttpSecurity> {
|
|
|
+public final class OAuth2Configurer<B extends HttpSecurityBuilder<B>>
|
|
|
+ extends AbstractHttpConfigurer<OAuth2Configurer<B>, B> {
|
|
|
+
|
|
|
+ private final OAuth2ClientConfigurer<B> clientConfigurer = new OAuth2ClientConfigurer<>();
|
|
|
+ private boolean clientEnabled;
|
|
|
|
|
|
/**
|
|
|
* Returns the {@link OAuth2ClientConfigurer} for configuring OAuth 2.0 Client support.
|
|
@@ -37,16 +43,40 @@ public final class OAuth2Configurer extends AbstractHttpConfigurer<OAuth2Configu
|
|
|
* @return the {@link OAuth2ClientConfigurer}
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- public OAuth2ClientConfigurer<HttpSecurity> client() throws Exception {
|
|
|
- return this.getOrApply(new OAuth2ClientConfigurer<>());
|
|
|
+ public OAuth2ClientConfigurer<B> client() throws Exception {
|
|
|
+ this.clientEnabled = true;
|
|
|
+ return this.clientConfigurer;
|
|
|
}
|
|
|
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private <C extends AbstractHttpConfigurer<C, HttpSecurity>> C getOrApply(C configurer) throws Exception {
|
|
|
- C existingConfigurer = (C) this.getBuilder().getConfigurer(configurer.getClass());
|
|
|
- if (existingConfigurer != null) {
|
|
|
- return existingConfigurer;
|
|
|
+ @Override
|
|
|
+ public void init(B builder) throws Exception {
|
|
|
+ if (this.clientEnabled) {
|
|
|
+ this.clientConfigurer.init(builder);
|
|
|
}
|
|
|
- return this.getBuilder().apply(configurer);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void configure(B builder) throws Exception {
|
|
|
+ if (this.clientEnabled) {
|
|
|
+ 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<B> withObjectPostProcessor(ObjectPostProcessor<?> objectPostProcessor) {
|
|
|
+ this.clientConfigurer.withObjectPostProcessor(objectPostProcessor);
|
|
|
+ return super.withObjectPostProcessor(objectPostProcessor);
|
|
|
}
|
|
|
}
|