@@ -453,7 +453,13 @@ public class OAuth2LoginSecurityConfig {
453
453
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
454
454
455
455
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
456
- oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
456
+ ProviderDetails providerDetails = userRequest.getClientRegistration().getProviderDetails();
457
+ String userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName();
458
+ if (StringUtils.hasText(userNameAttributeName)) {
459
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(), userNameAttributeName);
460
+ } else {
461
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
462
+ }
457
463
458
464
return Mono.just(oidcUser);
459
465
});
@@ -493,7 +499,12 @@ class OAuth2LoginSecurityConfig {
493
499
// 1) Fetch the authority information from the protected resource using accessToken
494
500
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
495
501
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
496
- val mappedOidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
502
+ val providerDetails = userRequest.getClientRegistration().getProviderDetails()
503
+ val userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName()
504
+ val mappedOidcUser = when (StringUtils.hasText(userNameAttributeName)) {
505
+ true -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo, userNameAttributeName)
506
+ false -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
507
+ }
497
508
498
509
Mono.just(mappedOidcUser)
499
510
}
0 commit comments