Polish OAuth2LoginConfigurer

Improve way of accessing ApplicationContext to ensure backward
compatibility.

Issue gh-7232
This commit is contained in:
Josh Cummings 2019-08-07 13:22:10 -06:00
parent a00ad37168
commit 65f6025cef
No known key found for this signature in database
GPG Key ID: 49EF60DD7FF83443
2 changed files with 14 additions and 16 deletions

View File

@ -2044,7 +2044,7 @@ public final class HttpSecurity extends
* @throws Exception
*/
public HttpSecurity oauth2Login(Customizer<OAuth2LoginConfigurer<HttpSecurity>> oauth2LoginCustomizer) throws Exception {
oauth2LoginCustomizer.customize(getOrApply(new OAuth2LoginConfigurer<>(getContext())));
oauth2LoginCustomizer.customize(getOrApply(new OAuth2LoginConfigurer<>()));
return HttpSecurity.this;
}

View File

@ -15,6 +15,13 @@
*/
package org.springframework.security.config.annotation.web.configurers.oauth2.client;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
import org.springframework.context.ApplicationContext;
@ -71,13 +78,6 @@ import org.springframework.security.web.util.matcher.RequestMatcher;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* An {@link AbstractHttpConfigurer} for OAuth 2.0 Login,
* which leverages the OAuth 2.0 Authorization Code Grant Flow.
@ -135,7 +135,6 @@ import java.util.Map;
public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>> extends
AbstractAuthenticationFilterConfigurer<B, OAuth2LoginConfigurer<B>, OAuth2LoginAuthenticationFilter> {
private final ApplicationContext context;
private final AuthorizationEndpointConfig authorizationEndpointConfig = new AuthorizationEndpointConfig();
private final TokenEndpointConfig tokenEndpointConfig = new TokenEndpointConfig();
private final RedirectionEndpointConfig redirectionEndpointConfig = new RedirectionEndpointConfig();
@ -143,11 +142,6 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>> exten
private String loginPage;
private String loginProcessingUrl = OAuth2LoginAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
public OAuth2LoginConfigurer(ApplicationContext context) {
Assert.notNull(context, "context cannot be null");
this.context = context;
}
/**
* Sets the repository of client registrations.
*
@ -652,9 +646,13 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>> exten
}
private <T> T getBeanOrNull(ResolvableType type) {
String[] names = this.context.getBeanNamesForType(type);
ApplicationContext context = getBuilder().getSharedObject(ApplicationContext.class);
if (context == null) {
return null;
}
String[] names = context.getBeanNamesForType(type);
if (names.length == 1) {
return (T) this.context.getBean(names[0]);
return (T) context.getBean(names[0]);
}
return null;
}