|
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