Skip to content

Commit 61720ac

Browse files
committed
Fixed validation in ClientRegistration.Builder
ClientRegistration.Builder defaulted to validating as an authorization_code registration, though a custom grant type could be in use. The actual grant_type is now verified for every case. - Fixed validation in ClientRegistration.Builder - New test that fails unless the issue is fixed. Also made OAuth2AuthorizationGrantRequestEntityUtils public to help implementing custom token response clients. Fixes gh-7040
1 parent 400e0c8 commit 61720ac

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ public ClientRegistration build() {
486486
this.validateClientCredentialsGrantType();
487487
} else if (AuthorizationGrantType.IMPLICIT.equals(this.authorizationGrantType)) {
488488
this.validateImplicitGrantType();
489-
} else {
489+
} else if (AuthorizationGrantType.AUTHORIZATION_CODE.equals(this.authorizationGrantType)) {
490490
this.validateAuthorizationCodeGrantType();
491491
}
492492
this.validateScopes();

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,4 +589,27 @@ public void buildWhenScopesContainAnInvalidCharacterThenThrowIllegalArgumentExce
589589
.build()
590590
).isInstanceOf(IllegalArgumentException.class);
591591
}
592+
593+
@Test
594+
public void buildWhenCustomGrantAllAttributesProvidedThenAllAttributesAreSet() {
595+
AuthorizationGrantType customGrantType = new AuthorizationGrantType("CUSTOM");
596+
ClientRegistration registration = ClientRegistration.withRegistrationId(REGISTRATION_ID)
597+
.clientId(CLIENT_ID)
598+
.clientSecret(CLIENT_SECRET)
599+
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
600+
.authorizationGrantType(customGrantType)
601+
.scope(SCOPES.toArray(new String[0]))
602+
.tokenUri(TOKEN_URI)
603+
.clientName(CLIENT_NAME)
604+
.build();
605+
606+
assertThat(registration.getRegistrationId()).isEqualTo(REGISTRATION_ID);
607+
assertThat(registration.getClientId()).isEqualTo(CLIENT_ID);
608+
assertThat(registration.getClientSecret()).isEqualTo(CLIENT_SECRET);
609+
assertThat(registration.getClientAuthenticationMethod()).isEqualTo(ClientAuthenticationMethod.BASIC);
610+
assertThat(registration.getAuthorizationGrantType()).isEqualTo(customGrantType);
611+
assertThat(registration.getScopes()).isEqualTo(SCOPES);
612+
assertThat(registration.getProviderDetails().getTokenUri()).isEqualTo(TOKEN_URI);
613+
assertThat(registration.getClientName()).isEqualTo(CLIENT_NAME);
614+
}
592615
}

0 commit comments

Comments
 (0)