From 221c33f5581547bff6791f08ddc8de4a4d497fca Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Thu, 9 Jul 2020 17:50:14 -0600 Subject: [PATCH] Polish OAuth2IntrospectionAuthenticatedPrincipal Removed some duplication by delegating to DefaultOAuth2AuthenticatedPrincipal Changed order of listed interfaces to satisfy compiler issue. When listed with OAuth2AuthenticatedPrincipal first, then OAuth2ResourceServerBeanDefinitionParserTests would fail to import OpaqueTokenBeanDefinitionParser. Switching OAuth2AuthenticatedPrincipal with OAuth2IntrospectionClaimAccessor resolved the compilation issue. Issue gh-6489 --- ...h2IntrospectionAuthenticatedPrincipal.java | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/introspection/OAuth2IntrospectionAuthenticatedPrincipal.java b/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/introspection/OAuth2IntrospectionAuthenticatedPrincipal.java index 0f4f925440..8e9427831e 100644 --- a/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/introspection/OAuth2IntrospectionAuthenticatedPrincipal.java +++ b/oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/introspection/OAuth2IntrospectionAuthenticatedPrincipal.java @@ -16,16 +16,13 @@ package org.springframework.security.oauth2.server.resource.introspection; -import static org.springframework.security.core.authority.AuthorityUtils.NO_AUTHORITIES; - import java.io.Serializable; import java.util.Collection; -import java.util.Collections; import java.util.Map; import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.oauth2.core.DefaultOAuth2AuthenticatedPrincipal; import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal; -import org.springframework.util.Assert; /** * A domain object that wraps the attributes of OAuth 2.0 Token Introspection. @@ -34,11 +31,9 @@ import org.springframework.util.Assert; * @since 5.4 * @see Introspection Response */ -public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2AuthenticatedPrincipal, - OAuth2IntrospectionClaimAccessor, Serializable { - private final Map attributes; - private final Collection authorities; - private final String name; +public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2IntrospectionClaimAccessor, + OAuth2AuthenticatedPrincipal, Serializable { + private final OAuth2AuthenticatedPrincipal delegate; /** * Constructs an {@code OAuth2IntrospectionAuthenticatedPrincipal} using the provided parameters. @@ -49,7 +44,7 @@ public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2Au public OAuth2IntrospectionAuthenticatedPrincipal(Map attributes, Collection authorities) { - this(null, attributes, authorities); + this.delegate = new DefaultOAuth2AuthenticatedPrincipal(attributes, authorities); } /** @@ -62,11 +57,7 @@ public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2Au public OAuth2IntrospectionAuthenticatedPrincipal(String name, Map attributes, Collection authorities) { - Assert.notEmpty(attributes, "attributes cannot be empty"); - this.attributes = Collections.unmodifiableMap(attributes); - this.authorities = authorities == null ? - NO_AUTHORITIES : Collections.unmodifiableCollection(authorities); - this.name = name == null ? getSubject() : name; + this.delegate = new DefaultOAuth2AuthenticatedPrincipal(name, attributes, authorities); } /** @@ -76,7 +67,7 @@ public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2Au */ @Override public Map getAttributes() { - return this.attributes; + return this.delegate.getAttributes(); } /** @@ -87,7 +78,7 @@ public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2Au */ @Override public Collection getAuthorities() { - return this.authorities; + return this.delegate.getAuthorities(); } /** @@ -95,7 +86,7 @@ public final class OAuth2IntrospectionAuthenticatedPrincipal implements OAuth2Au */ @Override public String getName() { - return this.name; + return this.delegate.getName(); } /**