Skip to content

Commit ede1a3c

Browse files
committed
Fix Delegation-based Strategy with OidcUserService/OidcReactiveOAuth2UserService examples
Fix examples not copying userNameAttributeName
1 parent fc9c80a commit ede1a3c

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

docs/modules/ROOT/pages/reactive/oauth2/login/advanced.adoc

+13-2
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,13 @@ public class OAuth2LoginSecurityConfig {
453453
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
454454
455455
// 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+
}
457463
458464
return Mono.just(oidcUser);
459465
});
@@ -493,7 +499,12 @@ class OAuth2LoginSecurityConfig {
493499
// 1) Fetch the authority information from the protected resource using accessToken
494500
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
495501
// 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+
}
497508
498509
Mono.just(mappedOidcUser)
499510
}

docs/modules/ROOT/pages/servlet/oauth2/login/advanced.adoc

+14-2
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,13 @@ public class OAuth2LoginSecurityConfig {
640640
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
641641
642642
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
643-
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
643+
ProviderDetails providerDetails = userRequest.getClientRegistration().getProviderDetails();
644+
String userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName();
645+
if (StringUtils.hasText(userNameAttributeName)) {
646+
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(), userNameAttributeName);
647+
} else {
648+
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
649+
}
644650
645651
return oidcUser;
646652
};
@@ -682,7 +688,13 @@ class OAuth2LoginSecurityConfig {
682688
// 1) Fetch the authority information from the protected resource using accessToken
683689
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
684690
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
685-
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
691+
val providerDetails = userRequest.getClientRegistration().getProviderDetails()
692+
val userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName()
693+
if (StringUtils.hasText(userNameAttributeName)) {
694+
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo, userNameAttributeName)
695+
else {
696+
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
697+
}
686698
687699
oidcUser
688700
}

0 commit comments

Comments
 (0)