Skip to content

Commit 1939a17

Browse files
committed
UserNameAttribute for custom OAuth2 provider
The UserNameAttribute field for a custom OAuth2 provider was ignored when building the ClientRegistration.
1 parent 77cbab7 commit 1939a17

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* {@link ClientRegistration}.
3838
*
3939
* @author Phillip Webb
40+
* @author Thiago Hirata
4041
* @since 2.0.0
4142
*/
4243
final class OAuth2ClientPropertiesRegistrationAdapter {
@@ -87,6 +88,7 @@ private static Builder getBuilder(Builder builder, Provider provider) {
8788
copyIfNotNull(provider::getTokenUri, builder::tokenUri);
8889
copyIfNotNull(provider::getUserInfoUri, builder::userInfoUri);
8990
copyIfNotNull(provider::getJwkSetUri, builder::jwkSetUri);
91+
copyIfNotNull(provider::getUserNameAttribute, builder::userNameAttributeName);
9092
return builder;
9193
}
9294

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapterTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@
2727
import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties.Registration;
2828
import org.springframework.security.oauth2.client.registration.ClientRegistration;
2929
import org.springframework.security.oauth2.client.registration.ClientRegistration.ProviderDetails;
30+
import org.springframework.security.oauth2.oidc.core.IdTokenClaim;
3031

3132
import static org.assertj.core.api.Assertions.assertThat;
3233

3334
/**
3435
* Tests for {@link OAuth2ClientPropertiesRegistrationAdapter}.
3536
*
3637
* @author Phillip Webb
38+
* @author Thiago Hirata
3739
*/
3840
public class OAuth2ClientPropertiesRegistrationAdapterTests {
3941

@@ -48,6 +50,7 @@ public void getClientRegistrationsWhenUsingDefinedProviderShouldAdapt()
4850
provider.setAuthorizationUri("http://example.com/auth");
4951
provider.setTokenUri("http://example.com/token");
5052
provider.setUserInfoUri("http://example.com/info");
53+
provider.setUserNameAttribute("sub");
5154
provider.setJwkSetUri("http://example.com/jwk");
5255
Registration registration = new Registration();
5356
registration.setProvider("provider");
@@ -69,6 +72,8 @@ public void getClientRegistrationsWhenUsingDefinedProviderShouldAdapt()
6972
assertThat(adaptedProvider.getTokenUri()).isEqualTo("http://example.com/token");
7073
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
7174
.isEqualTo("http://example.com/info");
75+
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
76+
.isEqualTo("sub");
7277
assertThat(adaptedProvider.getJwkSetUri()).isEqualTo("http://example.com/jwk");
7378
assertThat(adapted.getRegistrationId()).isEqualTo("registration");
7479
assertThat(adapted.getClientId()).isEqualTo("clientId");
@@ -101,6 +106,8 @@ public void getClientRegistrationsWhenUsingCommonProviderShouldAdapt()
101106
.isEqualTo("https://www.googleapis.com/oauth2/v4/token");
102107
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
103108
.isEqualTo("https://www.googleapis.com/oauth2/v3/userinfo");
109+
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
110+
.isEqualTo(IdTokenClaim.SUB);
104111
assertThat(adaptedProvider.getJwkSetUri())
105112
.isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
106113
assertThat(adapted.getRegistrationId()).isEqualTo("registration");
@@ -141,6 +148,8 @@ public void getClientRegistrationsWhenUsingCommonProviderWithOverrideShouldAdapt
141148
.isEqualTo("https://www.googleapis.com/oauth2/v4/token");
142149
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
143150
.isEqualTo("https://www.googleapis.com/oauth2/v3/userinfo");
151+
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
152+
.isEqualTo(IdTokenClaim.SUB);
144153
assertThat(adaptedProvider.getJwkSetUri())
145154
.isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
146155
assertThat(adapted.getRegistrationId()).isEqualTo("registration");

0 commit comments

Comments
 (0)