@@ -472,7 +472,13 @@ public class OAuth2LoginSecurityConfig {
472
472
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
473
473
474
474
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
475
- oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
475
+ ProviderDetails providerDetails = userRequest.getClientRegistration().getProviderDetails();
476
+ String userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName();
477
+ if (StringUtils.hasText(userNameAttributeName)) {
478
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(), userNameAttributeName);
479
+ } else {
480
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
481
+ }
476
482
477
483
return Mono.just(oidcUser);
478
484
});
@@ -513,7 +519,12 @@ class OAuth2LoginSecurityConfig {
513
519
// 1) Fetch the authority information from the protected resource using accessToken
514
520
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
515
521
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
516
- val mappedOidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
522
+ val providerDetails = userRequest.getClientRegistration().getProviderDetails()
523
+ val userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName()
524
+ val mappedOidcUser = when (StringUtils.hasText(userNameAttributeName)) {
525
+ true -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo, userNameAttributeName)
526
+ false -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
527
+ }
517
528
518
529
Mono.just(mappedOidcUser)
519
530
}
0 commit comments