|
5 | 5 | import java.security.interfaces.RSAPrivateKey; |
6 | 6 | import java.security.interfaces.RSAPublicKey; |
7 | 7 | import java.util.UUID; |
| 8 | +import java.util.Collection; |
| 9 | +import java.util.List; |
| 10 | + |
8 | 11 | import org.slf4j.Logger; |
9 | 12 | import org.slf4j.LoggerFactory; |
10 | 13 |
|
|
30 | 33 | import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher; |
31 | 34 | import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenClaimsContext; |
32 | 35 |
|
| 36 | +import org.springframework.security.oauth2.core.AuthorizationGrantType; |
| 37 | + |
33 | 38 | import com.nimbusds.jose.jwk.JWKSet; |
34 | 39 | import com.nimbusds.jose.jwk.RSAKey; |
35 | 40 | import com.nimbusds.jose.jwk.source.ImmutableJWKSet; |
@@ -130,9 +135,20 @@ public OAuth2TokenCustomizer<OAuth2TokenClaimsContext> accessTokenCustomizer() |
130 | 135 | logger.info("authorities : {}", principal.getAuthorities()); |
131 | 136 | logger.info("authorized scopes : {}", context.getAuthorizedScopes()); |
132 | 137 |
|
133 | | - context.getClaims() |
134 | | - .audience(AudienceAuthority.getAll(principal)) |
135 | | - .claim("extra_scope", ScopeAuthority.getAuthorites(principal)); |
| 138 | + if (AuthorizationGrantType.CLIENT_CREDENTIALS.equals(context.getAuthorizationGrantType())) { |
| 139 | + Collection<String> extra_scope = context.getRegisteredClient().getScopes(); |
| 140 | + logger.info("granting extra_scope: {}", extra_scope); |
| 141 | + context.getClaims() |
| 142 | + .claim("extra_scope", extra_scope); |
| 143 | + } else { |
| 144 | + Collection<String> extra_scope = ScopeAuthority.getAuthorites(principal); |
| 145 | + List<String> audience = AudienceAuthority.getAll(principal); |
| 146 | + logger.info("granting extra_scope: {}", extra_scope); |
| 147 | + logger.info("granting audience: {}", audience); |
| 148 | + context.getClaims() |
| 149 | + .audience(audience) |
| 150 | + .claim("extra_scope", extra_scope); |
| 151 | + } |
136 | 152 | }; |
137 | 153 | } |
138 | 154 | @Bean |
|
0 commit comments