Skip to content

Commit 010d99a

Browse files
committed
Make ClientRegistration.clientSecret optional
Fixes gh-5652
1 parent 8a0c686 commit 010d99a

File tree

2 files changed

+27
-28
lines changed

2 files changed

+27
-28
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
2121
import org.springframework.security.oauth2.core.oidc.OidcScopes;
2222
import org.springframework.util.Assert;
23+
import org.springframework.util.StringUtils;
2324

2425
import java.util.Arrays;
2526
import java.util.Collection;
@@ -463,7 +464,7 @@ private ClientRegistration create() {
463464

464465
clientRegistration.registrationId = this.registrationId;
465466
clientRegistration.clientId = this.clientId;
466-
clientRegistration.clientSecret = this.clientSecret;
467+
clientRegistration.clientSecret = StringUtils.hasText(this.clientSecret) ? this.clientSecret : "";
467468
clientRegistration.clientAuthenticationMethod = this.clientAuthenticationMethod;
468469
clientRegistration.authorizationGrantType = this.authorizationGrantType;
469470
clientRegistration.redirectUriTemplate = this.redirectUriTemplate;
@@ -488,7 +489,6 @@ private void validateAuthorizationCodeGrantType() {
488489
() -> "authorizationGrantType must be " + AuthorizationGrantType.AUTHORIZATION_CODE.getValue());
489490
Assert.hasText(this.registrationId, "registrationId cannot be empty");
490491
Assert.hasText(this.clientId, "clientId cannot be empty");
491-
Assert.hasText(this.clientSecret, "clientSecret cannot be empty");
492492
Assert.notNull(this.clientAuthenticationMethod, "clientAuthenticationMethod cannot be null");
493493
Assert.hasText(this.redirectUriTemplate, "redirectUriTemplate cannot be empty");
494494
Assert.hasText(this.authorizationUri, "authorizationUri cannot be empty");
@@ -515,7 +515,6 @@ private void validateClientCredentialsGrantType() {
515515
() -> "authorizationGrantType must be " + AuthorizationGrantType.CLIENT_CREDENTIALS.getValue());
516516
Assert.hasText(this.registrationId, "registrationId cannot be empty");
517517
Assert.hasText(this.clientId, "clientId cannot be empty");
518-
Assert.hasText(this.clientSecret, "clientSecret cannot be empty");
519518
Assert.notNull(this.clientAuthenticationMethod, "clientAuthenticationMethod cannot be null");
520519
Assert.hasText(this.tokenUri, "tokenUri cannot be empty");
521520
}

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

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -124,21 +124,22 @@ public void buildWhenAuthorizationCodeGrantClientIdIsNullThenThrowIllegalArgumen
124124
.build();
125125
}
126126

127-
@Test(expected = IllegalArgumentException.class)
128-
public void buildWhenAuthorizationCodeGrantClientSecretIsNullThenThrowIllegalArgumentException() {
129-
ClientRegistration.withRegistrationId(REGISTRATION_ID)
130-
.clientId(CLIENT_ID)
131-
.clientSecret(null)
132-
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
133-
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
134-
.redirectUriTemplate(REDIRECT_URI)
135-
.scope(SCOPES.toArray(new String[0]))
136-
.authorizationUri(AUTHORIZATION_URI)
137-
.tokenUri(TOKEN_URI)
138-
.userInfoAuthenticationMethod(AuthenticationMethod.FORM)
139-
.jwkSetUri(JWK_SET_URI)
140-
.clientName(CLIENT_NAME)
141-
.build();
127+
@Test
128+
public void buildWhenAuthorizationCodeGrantClientSecretIsNullThenDefaultToEmpty() {
129+
ClientRegistration clientRegistration = ClientRegistration.withRegistrationId(REGISTRATION_ID)
130+
.clientId(CLIENT_ID)
131+
.clientSecret(null)
132+
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
133+
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
134+
.redirectUriTemplate(REDIRECT_URI)
135+
.scope(SCOPES.toArray(new String[0]))
136+
.authorizationUri(AUTHORIZATION_URI)
137+
.tokenUri(TOKEN_URI)
138+
.userInfoAuthenticationMethod(AuthenticationMethod.FORM)
139+
.jwkSetUri(JWK_SET_URI)
140+
.clientName(CLIENT_NAME)
141+
.build();
142+
assertThat(clientRegistration.getClientSecret()).isEqualTo("");
142143
}
143144

144145
@Test(expected = IllegalArgumentException.class)
@@ -462,16 +463,15 @@ public void buildWhenClientCredentialsGrantClientIdIsNullThenThrowIllegalArgumen
462463
}
463464

464465
@Test
465-
public void buildWhenClientCredentialsGrantClientSecretIsNullThenThrowIllegalArgumentException() {
466-
assertThatThrownBy(() ->
467-
ClientRegistration.withRegistrationId(REGISTRATION_ID)
468-
.clientId(CLIENT_ID)
469-
.clientSecret(null)
470-
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
471-
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
472-
.tokenUri(TOKEN_URI)
473-
.build()
474-
).isInstanceOf(IllegalArgumentException.class);
466+
public void buildWhenClientCredentialsGrantClientSecretIsNullThenDefaultToEmpty() {
467+
ClientRegistration clientRegistration = ClientRegistration.withRegistrationId(REGISTRATION_ID)
468+
.clientId(CLIENT_ID)
469+
.clientSecret(null)
470+
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
471+
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
472+
.tokenUri(TOKEN_URI)
473+
.build();
474+
assertThat(clientRegistration.getClientSecret()).isEqualTo("");
475475
}
476476

477477
@Test

0 commit comments

Comments
 (0)