diff --git a/.github/workflows/authorization-server-make.yaml b/.github/workflows/authorization-server-make.yaml index d58e45d808..f0e3427daa 100644 --- a/.github/workflows/authorization-server-make.yaml +++ b/.github/workflows/authorization-server-make.yaml @@ -14,7 +14,7 @@ on: env: REGISTRY_IMAGE: pivotalrabbitmq/spring-authorization-server - IMAGE_TAG: 0.0.9 + IMAGE_TAG: 0.0.10 jobs: docker: runs-on: ubuntu-latest diff --git a/selenium/authorization-server/pom.xml b/selenium/authorization-server/pom.xml index 39534afeb6..f23f65e8ba 100644 --- a/selenium/authorization-server/pom.xml +++ b/selenium/authorization-server/pom.xml @@ -10,7 +10,7 @@ com.rabbitmq authorization-server - 0.0.9 + 0.0.10 authorization-server Authorization Server for Selenium diff --git a/selenium/authorization-server/src/main/java/com/rabbitmq/authorization_server/SecurityConfig.java b/selenium/authorization-server/src/main/java/com/rabbitmq/authorization_server/SecurityConfig.java index 30068bfff6..e695a5bd2a 100644 --- a/selenium/authorization-server/src/main/java/com/rabbitmq/authorization_server/SecurityConfig.java +++ b/selenium/authorization-server/src/main/java/com/rabbitmq/authorization_server/SecurityConfig.java @@ -5,6 +5,9 @@ import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.util.UUID; +import java.util.Collection; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,6 +33,8 @@ import org.springframework.security.web.authentication.LoginUrlAuthenticationEnt import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher; import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenClaimsContext; +import org.springframework.security.oauth2.core.AuthorizationGrantType; + import com.nimbusds.jose.jwk.JWKSet; import com.nimbusds.jose.jwk.RSAKey; import com.nimbusds.jose.jwk.source.ImmutableJWKSet; @@ -130,9 +135,20 @@ public class SecurityConfig { logger.info("authorities : {}", principal.getAuthorities()); logger.info("authorized scopes : {}", context.getAuthorizedScopes()); - context.getClaims() - .audience(AudienceAuthority.getAll(principal)) - .claim("extra_scope", ScopeAuthority.getAuthorites(principal)); + if (AuthorizationGrantType.CLIENT_CREDENTIALS.equals(context.getAuthorizationGrantType())) { + Collection extra_scope = context.getRegisteredClient().getScopes(); + logger.info("granting extra_scope: {}", extra_scope); + context.getClaims() + .claim("extra_scope", extra_scope); + } else { + Collection extra_scope = ScopeAuthority.getAuthorites(principal); + List audience = AudienceAuthority.getAll(principal); + logger.info("granting extra_scope: {}", extra_scope); + logger.info("granting audience: {}", audience); + context.getClaims() + .audience(audience) + .claim("extra_scope", extra_scope); + } }; } @Bean