Skip to content

Commit 6b815d2

Browse files
committed
Add copy constructor for DefaultOidcUser
1 parent 5b2212b commit 6b815d2

File tree

5 files changed

+61
-3
lines changed

5 files changed

+61
-3
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/jackson2/DefaultOidcUserMixin.java

+7
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,17 @@
4343
@JsonIgnoreProperties(value = { "attributes" }, ignoreUnknown = true)
4444
abstract class DefaultOidcUserMixin {
4545

46+
@Deprecated
4647
@JsonCreator
4748
DefaultOidcUserMixin(@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities,
4849
@JsonProperty("idToken") OidcIdToken idToken, @JsonProperty("userInfo") OidcUserInfo userInfo,
4950
@JsonProperty("nameAttributeKey") String nameAttributeKey) {
5051
}
5152

53+
@JsonCreator
54+
DefaultOidcUserMixin(@JsonProperty("name") String name,
55+
@JsonProperty("idToken") OidcIdToken idToken, @JsonProperty("userInfo") OidcUserInfo userInfo,
56+
@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities) {
57+
}
58+
5259
}

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/oidc/userinfo/OidcUserRequestUtils.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,10 @@ static OidcUser getUser(OidcUserRequest userRequest, OidcUserInfo userInfo) {
9191
authorities.add(new SimpleGrantedAuthority("SCOPE_" + scope));
9292
}
9393
if (StringUtils.hasText(userNameAttributeName)) {
94+
// TODO: Get name from OidcUserAuthority.collectClaims.
9495
return new DefaultOidcUser(authorities, userRequest.getIdToken(), userInfo, userNameAttributeName);
9596
}
96-
return new DefaultOidcUser(authorities, userRequest.getIdToken(), userInfo);
97+
return new DefaultOidcUser(userRequest.getIdToken(), userInfo, authorities);
9798
}
9899

99100
private OidcUserRequestUtils() {

oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/user/DefaultOidcUser.java

+50
Original file line numberDiff line numberDiff line change
@@ -51,34 +51,68 @@ public class DefaultOidcUser extends DefaultOAuth2User implements OidcUser {
5151
* @param authorities the authorities granted to the user
5252
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
5353
*/
54+
@Deprecated
5455
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken) {
5556
this(authorities, idToken, IdTokenClaimNames.SUB);
5657
}
5758

59+
/**
60+
* Constructs a {@code DefaultOidcUser} using the provided parameters.
61+
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
62+
* @param authorities the authorities granted to the user
63+
*/
64+
public DefaultOidcUser(OidcIdToken idToken, Collection<? extends GrantedAuthority> authorities) {
65+
this(null, idToken, authorities);
66+
}
67+
5868
/**
5969
* Constructs a {@code DefaultOidcUser} using the provided parameters.
6070
* @param authorities the authorities granted to the user
6171
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
6272
* @param nameAttributeKey the key used to access the user's &quot;name&quot; from
6373
* {@link #getAttributes()}
6474
*/
75+
@Deprecated
6576
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
6677
String nameAttributeKey) {
6778
this(authorities, idToken, null, nameAttributeKey);
6879
}
6980

81+
/**
82+
* Constructs a {@code DefaultOidcUser} using the provided parameters.
83+
* @param name the name of the user
84+
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
85+
* @param authorities the authorities granted to the user
86+
*/
87+
public DefaultOidcUser(String name, OidcIdToken idToken, Collection<? extends GrantedAuthority> authorities) {
88+
this(name, idToken, null, authorities);
89+
}
90+
7091
/**
7192
* Constructs a {@code DefaultOidcUser} using the provided parameters.
7293
* @param authorities the authorities granted to the user
7394
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
7495
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user,
7596
* may be {@code null}
7697
*/
98+
@Deprecated
7799
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
78100
OidcUserInfo userInfo) {
79101
this(authorities, idToken, userInfo, IdTokenClaimNames.SUB);
80102
}
81103

104+
/**
105+
* Constructs a {@code DefaultOidcUser} using the provided parameters.
106+
* @param authorities the authorities granted to the user
107+
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
108+
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user,
109+
* may be {@code null}
110+
*/
111+
public DefaultOidcUser(OidcIdToken idToken, OidcUserInfo userInfo,
112+
Collection<? extends GrantedAuthority> authorities) {
113+
this(null, idToken, userInfo, authorities);
114+
}
115+
82116
/**
83117
* Constructs a {@code DefaultOidcUser} using the provided parameters.
84118
* @param authorities the authorities granted to the user
@@ -88,13 +122,29 @@ public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcI
88122
* @param nameAttributeKey the key used to access the user's &quot;name&quot; from
89123
* {@link #getAttributes()}
90124
*/
125+
@Deprecated
91126
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
92127
OidcUserInfo userInfo, String nameAttributeKey) {
93128
super(authorities, OidcUserAuthority.collectClaims(idToken, userInfo), nameAttributeKey);
94129
this.idToken = idToken;
95130
this.userInfo = userInfo;
96131
}
97132

133+
/**
134+
* Constructs a {@code DefaultOidcUser} using the provided parameters.
135+
* @param name the name of the user
136+
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
137+
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user,
138+
* may be {@code null}
139+
* @param authorities the authorities granted to the user
140+
*/
141+
public DefaultOidcUser(String name, OidcIdToken idToken, OidcUserInfo userInfo,
142+
Collection<? extends GrantedAuthority> authorities) {
143+
super(name, OidcUserAuthority.collectClaims(idToken, userInfo), authorities);
144+
this.idToken = idToken;
145+
this.userInfo = userInfo;
146+
}
147+
98148
@Override
99149
public Map<String, Object> getClaims() {
100150
return this.getAttributes();

test/src/main/java/org/springframework/security/test/web/reactive/server/SecurityMockServerConfigurers.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ private OidcUserInfo getOidcUserInfo() {
10241024
}
10251025

10261026
private OidcUser defaultPrincipal() {
1027-
return new DefaultOidcUser(getAuthorities(), getOidcIdToken(), this.userInfo);
1027+
return new DefaultOidcUser(getOidcIdToken(), this.userInfo, getAuthorities());
10281028
}
10291029

10301030
}

test/src/main/java/org/springframework/security/test/web/servlet/request/SecurityMockMvcRequestPostProcessors.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1534,7 +1534,7 @@ private OidcUserInfo getOidcUserInfo() {
15341534
}
15351535

15361536
private OidcUser defaultPrincipal() {
1537-
return new DefaultOidcUser(getAuthorities(), getOidcIdToken(), this.userInfo);
1537+
return new DefaultOidcUser(getOidcIdToken(), this.userInfo, getAuthorities());
15381538
}
15391539

15401540
}

0 commit comments

Comments
 (0)