Skip to content

Commit 9daf058

Browse files
author
Steve Riesenberg
committed
Handle missing authorization endpoint uri
Closes gh-9795
1 parent 839cc5e commit 9daf058

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/ClientRegistrations.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ private static ClientRegistration.Builder withProviderConfiguration(Authorizatio
248248
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
249249
.clientAuthenticationMethod(method)
250250
.redirectUri("{baseUrl}/{action}/oauth2/code/{registrationId}")
251-
.authorizationUri(metadata.getAuthorizationEndpointURI().toASCIIString())
251+
.authorizationUri((metadata.getAuthorizationEndpointURI() != null) ? metadata.getAuthorizationEndpointURI().toASCIIString() : null)
252252
.providerConfigurationMetadata(configurationMetadata)
253253
.tokenUri(metadata.getTokenEndpointURI().toASCIIString())
254254
.issuerUri(issuer)

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/registration/ClientRegistrationsTests.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,30 @@ public void issuerWhenOAuth2JwtBearerGrantTypeThenSuccess() throws Exception {
258258
assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
259259
}
260260

261+
// gh-9795
262+
@Test
263+
public void issuerWhenResponseAuthorizationEndpointIsNullThenSuccess() throws Exception {
264+
this.response.put("grant_types_supported", Arrays.asList("urn:ietf:params:oauth:grant-type:jwt-bearer"));
265+
this.response.remove("authorization_endpoint");
266+
ClientRegistration registration = registration("").authorizationGrantType(AuthorizationGrantType.JWT_BEARER)
267+
.build();
268+
assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.JWT_BEARER);
269+
ClientRegistration.ProviderDetails provider = registration.getProviderDetails();
270+
assertThat(provider.getAuthorizationUri()).isNull();
271+
}
272+
273+
// gh-9795
274+
@Test
275+
public void issuerWhenOAuth2ResponseAuthorizationEndpointIsNullThenSuccess() throws Exception {
276+
this.response.put("grant_types_supported", Arrays.asList("urn:ietf:params:oauth:grant-type:jwt-bearer"));
277+
this.response.remove("authorization_endpoint");
278+
ClientRegistration registration = registrationOAuth2("", null)
279+
.authorizationGrantType(AuthorizationGrantType.JWT_BEARER).build();
280+
assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.JWT_BEARER);
281+
ClientRegistration.ProviderDetails provider = registration.getProviderDetails();
282+
assertThat(provider.getAuthorizationUri()).isNull();
283+
}
284+
261285
@Test
262286
public void issuerWhenTokenEndpointAuthMethodsNullThenDefaulted() throws Exception {
263287
this.response.remove("token_endpoint_auth_methods_supported");

0 commit comments

Comments
 (0)