Skip to content

Commit 798e9b4

Browse files
committed
Add Copy Method
Closes gh-16003
1 parent 07c4613 commit 798e9b4

File tree

13 files changed

+88
-242
lines changed

13 files changed

+88
-242
lines changed

docs/modules/ROOT/pages/reactive/test/web/oauth2.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -509,9 +509,9 @@ Java::
509509
[source,java,role="primary"]
510510
----
511511
OAuth2User oauth2User = new DefaultOAuth2User(
512-
"foo_user",
512+
AuthorityUtils.createAuthorityList("SCOPE_message:read"),
513513
Collections.singletonMap("user_name", "foo_user"),
514-
AuthorityUtils.createAuthorityList("SCOPE_message:read"));
514+
"user_name");
515515
516516
client
517517
.mutateWith(mockOAuth2Login().oauth2User(oauth2User))

docs/modules/ROOT/pages/servlet/test/mockmvc/oauth2.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -514,9 +514,9 @@ Java::
514514
[source,java,role="primary"]
515515
----
516516
OAuth2User oauth2User = new DefaultOAuth2User(
517-
"foo_user",
517+
AuthorityUtils.createAuthorityList("SCOPE_message:read"),
518518
Collections.singletonMap("user_name", "foo_user"),
519-
AuthorityUtils.createAuthorityList("SCOPE_message:read"));
519+
"user_name");
520520
521521
mvc
522522
.perform(get("/endpoint")

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

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -42,16 +42,10 @@
4242
@JsonIgnoreProperties(ignoreUnknown = true)
4343
abstract class DefaultOAuth2UserMixin {
4444

45-
@Deprecated
4645
@JsonCreator
4746
DefaultOAuth2UserMixin(@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities,
4847
@JsonProperty("attributes") Map<String, Object> attributes,
4948
@JsonProperty("nameAttributeKey") String nameAttributeKey) {
5049
}
5150

52-
@JsonCreator
53-
DefaultOAuth2UserMixin(@JsonProperty("name") String name,
54-
@JsonProperty("attributes") Map<String, Object> attributes,
55-
@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities) {
56-
}
5751
}

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

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

46-
@Deprecated
4746
@JsonCreator
4847
DefaultOidcUserMixin(@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities,
4948
@JsonProperty("idToken") OidcIdToken idToken, @JsonProperty("userInfo") OidcUserInfo userInfo,
5049
@JsonProperty("nameAttributeKey") String nameAttributeKey) {
5150
}
5251

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-
5952
}

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

+2-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.security.oauth2.client.oidc.userinfo;
1818

1919
import java.util.LinkedHashSet;
20-
import java.util.Map;
2120
import java.util.Set;
2221

2322
import org.springframework.security.core.GrantedAuthority;
@@ -29,7 +28,6 @@
2928
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
3029
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
3130
import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
32-
import org.springframework.security.oauth2.core.user.DefaultOAuth2User;
3331
import org.springframework.util.CollectionUtils;
3432
import org.springframework.util.StringUtils;
3533

@@ -92,15 +90,10 @@ static OidcUser getUser(OidcUserRequest userRequest, OidcUserInfo userInfo) {
9290
for (String scope : token.getScopes()) {
9391
authorities.add(new SimpleGrantedAuthority("SCOPE_" + scope));
9492
}
95-
DefaultOidcUser.Builder userBuilder = new DefaultOidcUser.Builder();
9693
if (StringUtils.hasText(userNameAttributeName)) {
97-
userBuilder.nameAttributeKey(userNameAttributeName);
94+
return new DefaultOidcUser(authorities, userRequest.getIdToken(), userInfo, userNameAttributeName);
9895
}
99-
return userBuilder
100-
.idToken(userRequest.getIdToken())
101-
.userInfo(userInfo)
102-
.authorities(authorities)
103-
.build();
96+
return new DefaultOidcUser(authorities, userRequest.getIdToken(), userInfo);
10497
}
10598

10699
private OidcUserRequestUtils() {

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

+1-5
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,7 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic
9696
OAuth2AccessToken token = userRequest.getAccessToken();
9797
Map<String, Object> attributes = this.attributesConverter.convert(userRequest).convert(response.getBody());
9898
Collection<GrantedAuthority> authorities = getAuthorities(token, attributes, userNameAttributeName);
99-
return new DefaultOAuth2User.Builder()
100-
.nameAttributeKey(userNameAttributeName)
101-
.attributes(attributes)
102-
.authorities(authorities)
103-
.build();
99+
return new DefaultOAuth2User(authorities, attributes, userNameAttributeName);
104100
}
105101

106102
/**

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

+1-5
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,7 @@ public Mono<OAuth2User> loadUser(OAuth2UserRequest userRequest) throws OAuth2Aut
138138
authorities.add(new SimpleGrantedAuthority("SCOPE_" + scope));
139139
}
140140

141-
return new DefaultOAuth2User.Builder()
142-
.nameAttributeKey(userNameAttributeName)
143-
.attributes(attrs)
144-
.authorities(authorities)
145-
.build();
141+
return new DefaultOAuth2User(authorities, attrs, userNameAttributeName);
146142
})
147143
.onErrorMap((ex) -> (ex instanceof UnsupportedMediaTypeException ||
148144
ex.getCause() instanceof UnsupportedMediaTypeException), (ex) -> {
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -55,7 +55,6 @@ public class DefaultOidcUser extends DefaultOAuth2User implements OidcUser {
5555
* @param authorities the authorities granted to the user
5656
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
5757
*/
58-
@Deprecated
5958
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken) {
6059
this(authorities, idToken, IdTokenClaimNames.SUB);
6160
}
@@ -67,7 +66,6 @@ public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcI
6766
* @param nameAttributeKey the key used to access the user's &quot;name&quot; from
6867
* {@link #getAttributes()}
6968
*/
70-
@Deprecated
7169
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
7270
String nameAttributeKey) {
7371
this(authorities, idToken, null, nameAttributeKey);
@@ -80,7 +78,6 @@ public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcI
8078
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user,
8179
* may be {@code null}
8280
*/
83-
@Deprecated
8481
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
8582
OidcUserInfo userInfo) {
8683
this(authorities, idToken, userInfo, IdTokenClaimNames.SUB);
@@ -95,27 +92,28 @@ public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcI
9592
* @param nameAttributeKey the key used to access the user's &quot;name&quot; from
9693
* {@link #getAttributes()}
9794
*/
98-
@Deprecated
9995
public DefaultOidcUser(Collection<? extends GrantedAuthority> authorities, OidcIdToken idToken,
10096
OidcUserInfo userInfo, String nameAttributeKey) {
10197
super(authorities, OidcUserAuthority.collectClaims(idToken, userInfo), nameAttributeKey);
10298
this.idToken = idToken;
10399
this.userInfo = userInfo;
104100
}
105101

102+
DefaultOidcUser(DefaultOidcUser user, Collection<GrantedAuthority> authorities) {
103+
super(user, authorities);
104+
this.idToken = user.idToken;
105+
this.userInfo = user.userInfo;
106+
}
107+
106108
/**
107-
* Constructs a {@code DefaultOidcUser} using the provided parameters.
108-
* @param name the name of the user
109-
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user
110-
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user,
111-
* may be {@code null}
112-
* @param authorities the authorities granted to the user
109+
* Copy this {@code DefaultOAuth2User}, using the provided {@code authorities}
110+
* @param authorities the authorities to use
111+
* @return a new {@code DefaultOAuth2User}
112+
* @since 6.5
113113
*/
114-
public DefaultOidcUser(String name, OidcIdToken idToken, OidcUserInfo userInfo,
115-
Collection<? extends GrantedAuthority> authorities) {
116-
super(name, OidcUserAuthority.collectClaims(idToken, userInfo), authorities);
117-
this.idToken = idToken;
118-
this.userInfo = userInfo;
114+
@Override
115+
public DefaultOidcUser withAuthorities(Collection<GrantedAuthority> authorities) {
116+
return new DefaultOidcUser(this, authorities);
119117
}
120118

121119
@Override
@@ -133,82 +131,4 @@ public OidcUserInfo getUserInfo() {
133131
return this.userInfo;
134132
}
135133

136-
public static class Builder {
137-
138-
private String name;
139-
140-
private String nameAttributeKey;
141-
142-
private OidcIdToken idToken;
143-
144-
private OidcUserInfo userInfo;
145-
146-
private Collection<? extends GrantedAuthority> authorities;
147-
148-
/**
149-
* Sets the name of the user.
150-
* @param name the name of the user
151-
* @return the {@link Builder}
152-
*/
153-
public Builder name(String name) {
154-
this.name = name;
155-
return this;
156-
}
157-
158-
/**
159-
* Sets the key used to access the user's &quot;name&quot; from the user attributes if no &quot;name&quot; is
160-
* provided.
161-
* @param nameAttributeKey the key used to access the user's &quot;name&quot; from the user attributes.
162-
* @return the {@link Builder}
163-
*/
164-
public Builder nameAttributeKey(String nameAttributeKey) {
165-
this.nameAttributeKey = nameAttributeKey;
166-
return this;
167-
}
168-
169-
/**
170-
* Sets the {@link OidcIdToken ID Token} containing claims about the user.
171-
* @param idToken the {@link OidcIdToken ID Token} containing claims about the user.
172-
* @return the {@link Builder}
173-
*/
174-
public Builder idToken(OidcIdToken idToken) {
175-
this.idToken = idToken;
176-
return this;
177-
}
178-
179-
/**
180-
* Sets the {@link OidcUserInfo UserInfo} containing claims about the user.
181-
* @param userInfo the {@link OidcUserInfo UserInfo} containing claims about the user.
182-
* @return the {@link Builder}
183-
*/
184-
public Builder userInfo(OidcUserInfo userInfo) {
185-
this.userInfo = userInfo;
186-
return this;
187-
}
188-
189-
/**
190-
* Sets the authorities granted to the user.
191-
* @param authorities the authorities granted to the user
192-
* @return the {@link Builder}
193-
*/
194-
public Builder authorities(Collection<? extends GrantedAuthority> authorities) {
195-
this.authorities = authorities;
196-
return this;
197-
}
198-
199-
/**
200-
* Builds a new {@link DefaultOidcUser}.
201-
* @return a {@link DefaultOidcUser}
202-
*/
203-
public DefaultOidcUser build() {
204-
String name = this.name;
205-
if (name == null) {
206-
Map<String, Object> attributes = OidcUserAuthority.collectClaims(this.idToken, userInfo);
207-
name = getNameFromAttributes(attributes, this.nameAttributeKey);
208-
}
209-
return new DefaultOidcUser(name, idToken, userInfo, authorities);
210-
}
211-
212-
}
213-
214134
}

0 commit comments

Comments
 (0)