Skip to content

Commit 6dc3944

Browse files
committed
Add OidcClientRegistrationAuthenticationProvider.setRegisteredClientConverter()
Closes spring-projectsgh-696
1 parent 4eb25c1 commit 6dc3944

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
* @since 0.4.0
4747
* @see RegisteredClientRepository
4848
* @see OAuth2AuthorizationService
49+
* @see OidcClientRegistrationAuthenticationToken
4950
* @see OidcClientRegistrationAuthenticationProvider
5051
* @see <a href="https://openid.net/specs/openid-connect-registration-1_0.html#ClientConfigurationEndpoint">4. Client Configuration Endpoint</a>
5152
*/
@@ -67,7 +68,7 @@ public OidcClientConfigurationAuthenticationProvider(RegisteredClientRepository
6768
Assert.notNull(authorizationService, "authorizationService cannot be null");
6869
this.registeredClientRepository = registeredClientRepository;
6970
this.authorizationService = authorizationService;
70-
this.clientRegistrationConverter = new OidcClientRegistrationConverter();
71+
this.clientRegistrationConverter = new RegisteredClientOidcClientRegistrationConverter();
7172
}
7273

7374
@Override

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

+16-4
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
* @see RegisteredClientRepository
7575
* @see OAuth2AuthorizationService
7676
* @see OAuth2TokenGenerator
77+
* @see OidcClientRegistrationAuthenticationToken
7778
* @see OidcClientConfigurationAuthenticationProvider
7879
* @see <a href="https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration">3. Client Registration Endpoint</a>
7980
*/
@@ -84,7 +85,7 @@ public final class OidcClientRegistrationAuthenticationProvider implements Authe
8485
private final OAuth2AuthorizationService authorizationService;
8586
private final OAuth2TokenGenerator<? extends OAuth2Token> tokenGenerator;
8687
private final Converter<RegisteredClient, OidcClientRegistration> clientRegistrationConverter;
87-
private final Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter;
88+
private Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter;
8889

8990
/**
9091
* Constructs an {@code OidcClientRegistrationAuthenticationProvider} using the provided parameters.
@@ -102,8 +103,8 @@ public OidcClientRegistrationAuthenticationProvider(RegisteredClientRepository r
102103
this.registeredClientRepository = registeredClientRepository;
103104
this.authorizationService = authorizationService;
104105
this.tokenGenerator = tokenGenerator;
105-
this.clientRegistrationConverter = new OidcClientRegistrationConverter();
106-
this.registeredClientConverter = new RegisteredClientConverter();
106+
this.clientRegistrationConverter = new RegisteredClientOidcClientRegistrationConverter();
107+
this.registeredClientConverter = new OidcClientRegistrationRegisteredClientConverter();
107108
}
108109

109110
@Override
@@ -147,6 +148,17 @@ public boolean supports(Class<?> authentication) {
147148
return OidcClientRegistrationAuthenticationToken.class.isAssignableFrom(authentication);
148149
}
149150

151+
/**
152+
* Sets the {@link Converter} used for converting an {@link OidcClientRegistration} to a {@link RegisteredClient}.
153+
*
154+
* @param registeredClientConverter the {@link Converter} used for converting an {@link OidcClientRegistration} to a {@link RegisteredClient}
155+
* @since 0.4.0
156+
*/
157+
public void setRegisteredClientConverter(Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter) {
158+
Assert.notNull(registeredClientConverter, "registeredClientConverter cannot be null");
159+
this.registeredClientConverter = registeredClientConverter;
160+
}
161+
150162
private OidcClientRegistrationAuthenticationToken registerClient(OidcClientRegistrationAuthenticationToken clientRegistrationAuthentication,
151163
OAuth2Authorization authorization) {
152164

@@ -293,7 +305,7 @@ private static void throwInvalidClientRegistration(String errorCode, String fiel
293305
throw new OAuth2AuthenticationException(error);
294306
}
295307

296-
private static final class RegisteredClientConverter implements Converter<OidcClientRegistration, RegisteredClient> {
308+
private static final class OidcClientRegistrationRegisteredClientConverter implements Converter<OidcClientRegistration, RegisteredClient> {
297309
private static final StringKeyGenerator CLIENT_ID_GENERATOR = new Base64StringKeyGenerator(
298310
Base64.getUrlEncoder().withoutPadding(), 32);
299311
private static final StringKeyGenerator CLIENT_SECRET_GENERATOR = new Base64StringKeyGenerator(
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @author Joe Grandja
3232
* @since 0.4.0
3333
*/
34-
final class OidcClientRegistrationConverter implements Converter<RegisteredClient, OidcClientRegistration> {
34+
final class RegisteredClientOidcClientRegistrationConverter implements Converter<RegisteredClient, OidcClientRegistration> {
3535

3636
@Override
3737
public OidcClientRegistration convert(RegisteredClient registeredClient) {

oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/oidc/authentication/OidcClientRegistrationAuthenticationProviderTests.java

+7
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@ public void constructorWhenTokenGeneratorNullThenThrowIllegalArgumentException()
134134
.withMessage("tokenGenerator cannot be null");
135135
}
136136

137+
@Test
138+
public void setRegisteredClientConverterWhenNullThenThrowIllegalArgumentException() {
139+
assertThatIllegalArgumentException()
140+
.isThrownBy(() -> this.authenticationProvider.setRegisteredClientConverter(null))
141+
.withMessage("registeredClientConverter cannot be null");
142+
}
143+
137144
@Test
138145
public void supportsWhenTypeOidcClientRegistrationAuthenticationTokenThenReturnTrue() {
139146
assertThat(this.authenticationProvider.supports(OidcClientRegistrationAuthenticationToken.class)).isTrue();

0 commit comments

Comments
 (0)