Skip to content

Commit a2df945

Browse files
committed
Remove constructor in OidcProviderConfigurationEndpointFilter
Closes spring-projectsgh-869
1 parent afb2ab5 commit a2df945

File tree

3 files changed

+24
-37
lines changed

3 files changed

+24
-37
lines changed

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/config/annotation/web/configurers/OidcConfigurer.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.springframework.security.config.annotation.ObjectPostProcessor;
2626
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2727
import org.springframework.security.oauth2.server.authorization.oidc.web.OidcProviderConfigurationEndpointFilter;
28-
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
2928
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
3029
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
3130
import org.springframework.security.web.util.matcher.OrRequestMatcher;
@@ -114,9 +113,8 @@ void configure(HttpSecurity httpSecurity) {
114113
clientRegistrationEndpointConfigurer.configure(httpSecurity);
115114
}
116115

117-
AuthorizationServerSettings authorizationServerSettings = OAuth2ConfigurerUtils.getAuthorizationServerSettings(httpSecurity);
118116
OidcProviderConfigurationEndpointFilter oidcProviderConfigurationEndpointFilter =
119-
new OidcProviderConfigurationEndpointFilter(authorizationServerSettings);
117+
new OidcProviderConfigurationEndpointFilter();
120118
httpSecurity.addFilterBefore(postProcess(oidcProviderConfigurationEndpointFilter), AbstractPreAuthenticatedProcessingFilter.class);
121119
}
122120

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/oidc/web/OidcProviderConfigurationEndpointFilter.java

+14-19
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponseType;
3333
import org.springframework.security.oauth2.core.oidc.OidcScopes;
3434
import org.springframework.security.oauth2.jose.jws.SignatureAlgorithm;
35+
import org.springframework.security.oauth2.server.authorization.context.AuthorizationServerContext;
3536
import org.springframework.security.oauth2.server.authorization.context.AuthorizationServerContextHolder;
3637
import org.springframework.security.oauth2.server.authorization.oidc.OidcProviderConfiguration;
3738
import org.springframework.security.oauth2.server.authorization.oidc.http.converter.OidcProviderConfigurationHttpMessageConverter;
3839
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
3940
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
4041
import org.springframework.security.web.util.matcher.RequestMatcher;
41-
import org.springframework.util.Assert;
4242
import org.springframework.web.filter.OncePerRequestFilter;
4343
import org.springframework.web.util.UriComponentsBuilder;
4444

@@ -57,20 +57,12 @@ public final class OidcProviderConfigurationEndpointFilter extends OncePerReques
5757
*/
5858
private static final String DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI = "/.well-known/openid-configuration";
5959

60-
private final AuthorizationServerSettings authorizationServerSettings;
61-
private final RequestMatcher requestMatcher;
60+
private final RequestMatcher requestMatcher = new AntPathRequestMatcher(
61+
DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI,
62+
HttpMethod.GET.name());
6263
private final OidcProviderConfigurationHttpMessageConverter providerConfigurationHttpMessageConverter =
6364
new OidcProviderConfigurationHttpMessageConverter();
6465

65-
public OidcProviderConfigurationEndpointFilter(AuthorizationServerSettings authorizationServerSettings) {
66-
Assert.notNull(authorizationServerSettings, "authorizationServerSettings cannot be null");
67-
this.authorizationServerSettings = authorizationServerSettings;
68-
this.requestMatcher = new AntPathRequestMatcher(
69-
DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI,
70-
HttpMethod.GET.name()
71-
);
72-
}
73-
7466
@Override
7567
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
7668
throws ServletException, IOException {
@@ -80,22 +72,24 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
8072
return;
8173
}
8274

83-
String issuer = AuthorizationServerContextHolder.getContext().getIssuer();
75+
AuthorizationServerContext authorizationServerContext = AuthorizationServerContextHolder.getContext();
76+
String issuer = authorizationServerContext.getIssuer();
77+
AuthorizationServerSettings authorizationServerSettings = authorizationServerContext.getAuthorizationServerSettings();
8478

8579
OidcProviderConfiguration providerConfiguration = OidcProviderConfiguration.builder()
8680
.issuer(issuer)
87-
.authorizationEndpoint(asUrl(issuer, this.authorizationServerSettings.getAuthorizationEndpoint()))
88-
.tokenEndpoint(asUrl(issuer, this.authorizationServerSettings.getTokenEndpoint()))
81+
.authorizationEndpoint(asUrl(issuer, authorizationServerSettings.getAuthorizationEndpoint()))
82+
.tokenEndpoint(asUrl(issuer, authorizationServerSettings.getTokenEndpoint()))
8983
.tokenEndpointAuthenticationMethods(clientAuthenticationMethods())
90-
.jwkSetUrl(asUrl(issuer, this.authorizationServerSettings.getJwkSetEndpoint()))
91-
.userInfoEndpoint(asUrl(issuer, this.authorizationServerSettings.getOidcUserInfoEndpoint()))
84+
.jwkSetUrl(asUrl(issuer, authorizationServerSettings.getJwkSetEndpoint()))
85+
.userInfoEndpoint(asUrl(issuer, authorizationServerSettings.getOidcUserInfoEndpoint()))
9286
.responseType(OAuth2AuthorizationResponseType.CODE.getValue())
9387
.grantType(AuthorizationGrantType.AUTHORIZATION_CODE.getValue())
9488
.grantType(AuthorizationGrantType.CLIENT_CREDENTIALS.getValue())
9589
.grantType(AuthorizationGrantType.REFRESH_TOKEN.getValue())
96-
.tokenRevocationEndpoint(asUrl(issuer, this.authorizationServerSettings.getTokenRevocationEndpoint()))
90+
.tokenRevocationEndpoint(asUrl(issuer, authorizationServerSettings.getTokenRevocationEndpoint()))
9791
.tokenRevocationEndpointAuthenticationMethods(clientAuthenticationMethods())
98-
.tokenIntrospectionEndpoint(asUrl(issuer, this.authorizationServerSettings.getTokenIntrospectionEndpoint()))
92+
.tokenIntrospectionEndpoint(asUrl(issuer, authorizationServerSettings.getTokenIntrospectionEndpoint()))
9993
.tokenIntrospectionEndpointAuthenticationMethods(clientAuthenticationMethods())
10094
.subjectType("public")
10195
.idTokenSigningAlgorithm(SignatureAlgorithm.RS256.getName())
@@ -119,4 +113,5 @@ private static Consumer<List<String>> clientAuthenticationMethods() {
119113
private static String asUrl(String issuer, String endpoint) {
120114
return UriComponentsBuilder.fromUriString(issuer).path(endpoint).build().toUriString();
121115
}
116+
122117
}

oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/oidc/web/OidcProviderConfigurationEndpointFilterTests.java

+9-15
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,11 @@ public void cleanup() {
4949
AuthorizationServerContextHolder.resetContext();
5050
}
5151

52-
@Test
53-
public void constructorWhenAuthorizationServerSettingsNullThenThrowIllegalArgumentException() {
54-
assertThatIllegalArgumentException()
55-
.isThrownBy(() -> new OidcProviderConfigurationEndpointFilter(null))
56-
.withMessage("authorizationServerSettings cannot be null");
57-
}
58-
5952
@Test
6053
public void doFilterWhenNotConfigurationRequestThenNotProcessed() throws Exception {
61-
OidcProviderConfigurationEndpointFilter filter =
62-
new OidcProviderConfigurationEndpointFilter(AuthorizationServerSettings.builder().build());
54+
AuthorizationServerSettings authorizationServerSettings = AuthorizationServerSettings.builder().build();
55+
AuthorizationServerContextHolder.setContext(new TestAuthorizationServerContext(authorizationServerSettings, null));
56+
OidcProviderConfigurationEndpointFilter filter = new OidcProviderConfigurationEndpointFilter();
6357

6458
String requestUri = "/path";
6559
MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
@@ -74,8 +68,9 @@ public void doFilterWhenNotConfigurationRequestThenNotProcessed() throws Excepti
7468

7569
@Test
7670
public void doFilterWhenConfigurationRequestPostThenNotProcessed() throws Exception {
77-
OidcProviderConfigurationEndpointFilter filter =
78-
new OidcProviderConfigurationEndpointFilter(AuthorizationServerSettings.builder().build());
71+
AuthorizationServerSettings authorizationServerSettings = AuthorizationServerSettings.builder().build();
72+
AuthorizationServerContextHolder.setContext(new TestAuthorizationServerContext(authorizationServerSettings, null));
73+
OidcProviderConfigurationEndpointFilter filter = new OidcProviderConfigurationEndpointFilter();
7974

8075
String requestUri = DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI;
8176
MockHttpServletRequest request = new MockHttpServletRequest("POST", requestUri);
@@ -108,8 +103,7 @@ public void doFilterWhenConfigurationRequestThenConfigurationResponse() throws E
108103
.tokenIntrospectionEndpoint(tokenIntrospectionEndpoint)
109104
.build();
110105
AuthorizationServerContextHolder.setContext(new TestAuthorizationServerContext(authorizationServerSettings, null));
111-
OidcProviderConfigurationEndpointFilter filter =
112-
new OidcProviderConfigurationEndpointFilter(authorizationServerSettings);
106+
OidcProviderConfigurationEndpointFilter filter = new OidcProviderConfigurationEndpointFilter();
113107

114108
String requestUri = DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI;
115109
MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
@@ -146,8 +140,7 @@ public void doFilterWhenAuthorizationServerSettingsWithInvalidIssuerThenThrowIll
146140
.issuer("https://this is an invalid URL")
147141
.build();
148142
AuthorizationServerContextHolder.setContext(new TestAuthorizationServerContext(authorizationServerSettings, null));
149-
OidcProviderConfigurationEndpointFilter filter =
150-
new OidcProviderConfigurationEndpointFilter(authorizationServerSettings);
143+
OidcProviderConfigurationEndpointFilter filter = new OidcProviderConfigurationEndpointFilter();
151144

152145
String requestUri = DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI;
153146
MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
@@ -159,4 +152,5 @@ public void doFilterWhenAuthorizationServerSettingsWithInvalidIssuerThenThrowIll
159152
.isThrownBy(() -> filter.doFilter(request, response, filterChain))
160153
.withMessage("issuer must be a valid URL");
161154
}
155+
162156
}

0 commit comments

Comments
 (0)