|
@@ -33,6 +33,7 @@ import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.Set;
|
|
|
|
|
@@ -51,14 +52,14 @@ public class OidcUserService implements OAuth2UserService<OidcUserRequest, OidcU
|
|
|
private static final String INVALID_USER_INFO_RESPONSE_ERROR_CODE = "invalid_user_info_response";
|
|
|
private final Set<String> userInfoScopes = new HashSet<>(
|
|
|
Arrays.asList(OidcScopes.PROFILE, OidcScopes.EMAIL, OidcScopes.ADDRESS, OidcScopes.PHONE));
|
|
|
- private final OAuth2UserService<OAuth2UserRequest, OAuth2User> defaultUserService = new DefaultOAuth2UserService();
|
|
|
+ private OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService = new DefaultOAuth2UserService();
|
|
|
|
|
|
@Override
|
|
|
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
|
|
|
Assert.notNull(userRequest, "userRequest cannot be null");
|
|
|
OidcUserInfo userInfo = null;
|
|
|
if (this.shouldRetrieveUserInfo(userRequest)) {
|
|
|
- OAuth2User oauth2User = this.defaultUserService.loadUser(userRequest);
|
|
|
+ OAuth2User oauth2User = this.oauth2UserService.loadUser(userRequest);
|
|
|
userInfo = new OidcUserInfo(oauth2User.getAttributes());
|
|
|
|
|
|
// http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse
|
|
@@ -81,9 +82,8 @@ public class OidcUserService implements OAuth2UserService<OidcUserRequest, OidcU
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- GrantedAuthority authority = new OidcUserAuthority(userRequest.getIdToken(), userInfo);
|
|
|
- Set<GrantedAuthority> authorities = new HashSet<>();
|
|
|
- authorities.add(authority);
|
|
|
+ Set<GrantedAuthority> authorities = Collections.singleton(
|
|
|
+ new OidcUserAuthority(userRequest.getIdToken(), userInfo));
|
|
|
|
|
|
OidcUser user;
|
|
|
|
|
@@ -121,4 +121,15 @@ public class OidcUserService implements OAuth2UserService<OidcUserRequest, OidcU
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the {@link OAuth2UserService} used when requesting the user info resource.
|
|
|
+ *
|
|
|
+ * @since 5.1
|
|
|
+ * @param oauth2UserService the {@link OAuth2UserService} used when requesting the user info resource.
|
|
|
+ */
|
|
|
+ public final void setOauth2UserService(OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService) {
|
|
|
+ Assert.notNull(oauth2UserService, "oauth2UserService cannot be null");
|
|
|
+ this.oauth2UserService = oauth2UserService;
|
|
|
+ }
|
|
|
}
|