Skip to content

Commit 488901d

Browse files
daniel-shuysjohnr
authored andcommitted
Fix Delegation-based Strategy examples
Fix examples not copying userNameAttributeName Issue gh-12275 Issue gh-12282 Issue gh-14672
1 parent e52dd81 commit 488901d

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,13 @@ public class OAuth2LoginSecurityConfig {
472472
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
473473
474474
// 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+
}
476482
477483
return Mono.just(oidcUser);
478484
});
@@ -513,7 +519,12 @@ class OAuth2LoginSecurityConfig {
513519
// 1) Fetch the authority information from the protected resource using accessToken
514520
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
515521
// 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+
}
517528
518529
Mono.just(mappedOidcUser)
519530
}

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,13 @@ public class OAuth2LoginSecurityConfig {
660660
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
661661
662662
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
663-
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
663+
ProviderDetails providerDetails = userRequest.getClientRegistration().getProviderDetails();
664+
String userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName();
665+
if (StringUtils.hasText(userNameAttributeName)) {
666+
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(), userNameAttributeName);
667+
} else {
668+
oidcUser = new DefaultOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo());
669+
}
664670
665671
return oidcUser;
666672
};
@@ -703,7 +709,13 @@ class OAuth2LoginSecurityConfig {
703709
// 1) Fetch the authority information from the protected resource using accessToken
704710
// 2) Map the authority information to one or more GrantedAuthority's and add it to mappedAuthorities
705711
// 3) Create a copy of oidcUser but use the mappedAuthorities instead
706-
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
712+
val providerDetails = userRequest.getClientRegistration().getProviderDetails()
713+
val userNameAttributeName = providerDetails.getUserInfoEndpoint().getUserNameAttributeName()
714+
if (StringUtils.hasText(userNameAttributeName)) {
715+
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo, userNameAttributeName)
716+
else {
717+
oidcUser = DefaultOidcUser(mappedAuthorities, oidcUser.idToken, oidcUser.userInfo)
718+
}
707719
708720
oidcUser
709721
}

0 commit comments

Comments
 (0)