Skip to content

Commit 65f6025

Browse files
committed
Polish OAuth2LoginConfigurer
Improve way of accessing ApplicationContext to ensure backward compatibility. Issue gh-7232
1 parent a00ad37 commit 65f6025

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2044,7 +2044,7 @@ public OAuth2LoginConfigurer<HttpSecurity> oauth2Login() throws Exception {
20442044
* @throws Exception
20452045
*/
20462046
public HttpSecurity oauth2Login(Customizer<OAuth2LoginConfigurer<HttpSecurity>> oauth2LoginCustomizer) throws Exception {
2047-
oauth2LoginCustomizer.customize(getOrApply(new OAuth2LoginConfigurer<>(getContext())));
2047+
oauth2LoginCustomizer.customize(getOrApply(new OAuth2LoginConfigurer<>()));
20482048
return HttpSecurity.this;
20492049
}
20502050

config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
*/
1616
package org.springframework.security.config.annotation.web.configurers.oauth2.client;
1717

18+
import java.util.ArrayList;
19+
import java.util.Collections;
20+
import java.util.HashMap;
21+
import java.util.LinkedHashMap;
22+
import java.util.List;
23+
import java.util.Map;
24+
1825
import org.springframework.beans.factory.BeanFactoryUtils;
1926
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
2027
import org.springframework.context.ApplicationContext;
@@ -71,13 +78,6 @@
7178
import org.springframework.util.Assert;
7279
import org.springframework.util.ClassUtils;
7380

74-
import java.util.ArrayList;
75-
import java.util.Collections;
76-
import java.util.HashMap;
77-
import java.util.LinkedHashMap;
78-
import java.util.List;
79-
import java.util.Map;
80-
8181
/**
8282
* An {@link AbstractHttpConfigurer} for OAuth 2.0 Login,
8383
* which leverages the OAuth 2.0 Authorization Code Grant Flow.
@@ -135,19 +135,13 @@
135135
public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>> extends
136136
AbstractAuthenticationFilterConfigurer<B, OAuth2LoginConfigurer<B>, OAuth2LoginAuthenticationFilter> {
137137

138-
private final ApplicationContext context;
139138
private final AuthorizationEndpointConfig authorizationEndpointConfig = new AuthorizationEndpointConfig();
140139
private final TokenEndpointConfig tokenEndpointConfig = new TokenEndpointConfig();
141140
private final RedirectionEndpointConfig redirectionEndpointConfig = new RedirectionEndpointConfig();
142141
private final UserInfoEndpointConfig userInfoEndpointConfig = new UserInfoEndpointConfig();
143142
private String loginPage;
144143
private String loginProcessingUrl = OAuth2LoginAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
145144

146-
public OAuth2LoginConfigurer(ApplicationContext context) {
147-
Assert.notNull(context, "context cannot be null");
148-
this.context = context;
149-
}
150-
151145
/**
152146
* Sets the repository of client registrations.
153147
*
@@ -652,9 +646,13 @@ private OAuth2UserService<OAuth2UserRequest, OAuth2User> getOAuth2UserService()
652646
}
653647

654648
private <T> T getBeanOrNull(ResolvableType type) {
655-
String[] names = this.context.getBeanNamesForType(type);
649+
ApplicationContext context = getBuilder().getSharedObject(ApplicationContext.class);
650+
if (context == null) {
651+
return null;
652+
}
653+
String[] names = context.getBeanNamesForType(type);
656654
if (names.length == 1) {
657-
return (T) this.context.getBean(names[0]);
655+
return (T) context.getBean(names[0]);
658656
}
659657
return null;
660658
}

0 commit comments

Comments
 (0)