parent
							
								
									81e19ad85e
								
							
						
					
					
						commit
						81a73e1f55
					
				| 
						 | 
					@ -999,8 +999,8 @@ public final class HttpSecurity extends
 | 
				
			||||||
	 * @return the {@link OAuth2Configurer} for further customizations
 | 
						 * @return the {@link OAuth2Configurer} for further customizations
 | 
				
			||||||
	 * @throws Exception
 | 
						 * @throws Exception
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public OAuth2Configurer oauth2() throws Exception {
 | 
						public OAuth2Configurer<HttpSecurity> oauth2() throws Exception {
 | 
				
			||||||
		return getOrApply(new OAuth2Configurer());
 | 
							return getOrApply(new OAuth2Configurer<>());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
package org.springframework.security.config.annotation.web.configurers.oauth2;
 | 
					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.builders.HttpSecurity;
 | 
				
			||||||
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
 | 
					import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
 | 
				
			||||||
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2ClientConfigurer;
 | 
					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 OAuth2ClientConfigurer
 | 
				
			||||||
 * @see AbstractHttpConfigurer
 | 
					 * @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.
 | 
						 * 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}
 | 
						 * @return the {@link OAuth2ClientConfigurer}
 | 
				
			||||||
	 * @throws Exception
 | 
						 * @throws Exception
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public OAuth2ClientConfigurer<HttpSecurity> client() throws Exception {
 | 
						public OAuth2ClientConfigurer<B> client() throws Exception {
 | 
				
			||||||
		return this.getOrApply(new OAuth2ClientConfigurer<>());
 | 
							this.clientEnabled = true;
 | 
				
			||||||
 | 
							return this.clientConfigurer;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@SuppressWarnings("unchecked")
 | 
						@Override
 | 
				
			||||||
	private <C extends AbstractHttpConfigurer<C, HttpSecurity>> C getOrApply(C configurer) throws Exception {
 | 
						public void init(B builder) throws Exception {
 | 
				
			||||||
		C existingConfigurer = (C) this.getBuilder().getConfigurer(configurer.getClass());
 | 
							if (this.clientEnabled) {
 | 
				
			||||||
		if (existingConfigurer != null) {
 | 
								this.clientConfigurer.init(builder);
 | 
				
			||||||
			return existingConfigurer;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		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);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue