parent
							
								
									81e19ad85e
								
							
						
					
					
						commit
						81a73e1f55
					
				| 
						 | 
				
			
			@ -999,8 +999,8 @@ public final class HttpSecurity extends
 | 
			
		|||
	 * @return the {@link OAuth2Configurer} for further customizations
 | 
			
		||||
	 * @throws Exception
 | 
			
		||||
	 */
 | 
			
		||||
	public OAuth2Configurer oauth2() throws Exception {
 | 
			
		||||
		return getOrApply(new OAuth2Configurer());
 | 
			
		||||
	public OAuth2Configurer<HttpSecurity> oauth2() throws Exception {
 | 
			
		||||
		return getOrApply(new OAuth2Configurer<>());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
		}
 | 
			
		||||
		return this.getBuilder().apply(configurer);
 | 
			
		||||
	@Override
 | 
			
		||||
	public void init(B builder) throws Exception {
 | 
			
		||||
		if (this.clientEnabled) {
 | 
			
		||||
			this.clientConfigurer.init(builder);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@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