Skip to content

Commit 6d21a65

Browse files
committed
Polish gh-1345
1 parent 9109d37 commit 6d21a65

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/oidc/authentication/OidcClientRegistrationAuthenticationProvider.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -196,28 +196,26 @@ private OidcClientRegistrationAuthenticationToken registerClient(OidcClientRegis
196196
}
197197

198198
RegisteredClient registeredClient = this.registeredClientConverter.convert(clientRegistrationAuthentication.getClientRegistration());
199-
RegisteredClient.Builder registeredClientForDBBuilder = RegisteredClient.from(registeredClient);
200-
RegisteredClient.Builder registeredClientForResponseBuilder = RegisteredClient.from(registeredClient);
201199

202200
if (StringUtils.hasText(registeredClient.getClientSecret())) {
203201
// Encode the client secret
204-
String encodedClientSecret = this.passwordEncoder.encode(registeredClient.getClientSecret());
205-
registeredClientForDBBuilder = registeredClientForDBBuilder
206-
.clientSecret(encodedClientSecret);
202+
RegisteredClient updatedRegisteredClient = RegisteredClient.from(registeredClient)
203+
.clientSecret(this.passwordEncoder.encode(registeredClient.getClientSecret()))
204+
.build();
205+
this.registeredClientRepository.save(updatedRegisteredClient);
207206
if (ClientAuthenticationMethod.CLIENT_SECRET_JWT.getValue().equals(clientRegistrationAuthentication.getClientRegistration().getTokenEndpointAuthenticationMethod())) {
208-
registeredClientForResponseBuilder.clientSecret(encodedClientSecret);
207+
// gh-1344 Return the hashed client_secret
208+
registeredClient = updatedRegisteredClient;
209209
}
210+
} else {
211+
this.registeredClientRepository.save(registeredClient);
210212
}
211213

212-
this.registeredClientRepository.save(registeredClientForDBBuilder.build());
213-
214-
RegisteredClient registeredClientForResponse = registeredClientForResponseBuilder.build();
215-
216214
if (this.logger.isTraceEnabled()) {
217215
this.logger.trace("Saved registered client");
218216
}
219217

220-
OAuth2Authorization registeredClientAuthorization = registerAccessToken(registeredClientForResponse);
218+
OAuth2Authorization registeredClientAuthorization = registerAccessToken(registeredClient);
221219

222220
// Invalidate the "initial" access token as it can only be used once
223221
authorization = OidcAuthenticationProviderUtils.invalidate(authorization, authorization.getAccessToken().getToken());
@@ -230,7 +228,7 @@ private OidcClientRegistrationAuthenticationToken registerClient(OidcClientRegis
230228
this.logger.trace("Saved authorization with invalidated initial access token");
231229
}
232230

233-
Map<String, Object> clientRegistrationClaims = this.clientRegistrationConverter.convert(registeredClientForResponse).getClaims();
231+
Map<String, Object> clientRegistrationClaims = this.clientRegistrationConverter.convert(registeredClient).getClaims();
234232
OidcClientRegistration clientRegistration = OidcClientRegistration.withClaims(clientRegistrationClaims)
235233
.registrationAccessToken(registeredClientAuthorization.getAccessToken().getToken().getTokenValue())
236234
.build();

oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/config/annotation/web/configurers/OidcClientRegistrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,7 @@ public void requestWhenClientRegistersWithSecretThenClientAuthenticationSuccess(
402402
.andReturn();
403403
}
404404

405+
// gh-1344
405406
@Test
406407
public void requestWhenClientRegistersWithClientSecretJwtThenClientAuthenticationSuccess() throws Exception {
407408
this.spring.register(AuthorizationServerConfiguration.class).autowire();

0 commit comments

Comments
 (0)