|
@@ -472,7 +472,13 @@ public class OAuth2LoginSecurityConfig {
|
|
|
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
|
|
|
|
|
|
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
|
|
|
- oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
|
|
|
+ ProviderDetails providerDetails = userRequest.getClientRegistration().getProviderDetails();
|
|
|
+ String userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName();
|
|
|
+ if (StringUtils.hasText(userNameAttributeName)) {
|
|
|
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(), userNameAttributeName);
|
|
|
+ } else {
|
|
|
+ oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
|
|
|
+ }
|
|
|
|
|
|
return Mono.just(oidcUser);
|
|
|
});
|
|
@@ -513,7 +519,12 @@ class OAuth2LoginSecurityConfig {
|
|
|
// 1) Fetch the authority information from the protected resource using accessToken
|
|
|
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
|
|
|
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
|
|
|
- val mappedOidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
|
|
|
+ val providerDetails = userRequest.getClientRegistration().getProviderDetails()
|
|
|
+ val userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName()
|
|
|
+ val mappedOidcUser = when (StringUtils.hasText(userNameAttributeName)) {
|
|
|
+ true -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo, userNameAttributeName)
|
|
|
+ false -> DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
|
|
|
+ }
|
|
|
|
|
|
Mono.just(mappedOidcUser)
|
|
|
}
|