|
@@ -152,7 +152,10 @@ public class JwtGeneratorTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void generateWhenIdTokenTypeThenReturnJwt() {
|
|
public void generateWhenIdTokenTypeThenReturnJwt() {
|
|
- RegisteredClient registeredClient = TestRegisteredClients.registeredClient().scope(OidcScopes.OPENID).build();
|
|
|
|
|
|
+ RegisteredClient registeredClient = TestRegisteredClients.registeredClient()
|
|
|
|
+ .scope(OidcScopes.OPENID)
|
|
|
|
+ .tokenSettings(TokenSettings.builder().idTokenSignatureAlgorithm(SignatureAlgorithm.ES256).build())
|
|
|
|
+ .build();
|
|
Map<String, Object> authenticationRequestAdditionalParameters = new HashMap<>();
|
|
Map<String, Object> authenticationRequestAdditionalParameters = new HashMap<>();
|
|
authenticationRequestAdditionalParameters.put(OidcParameterNames.NONCE, "nonce");
|
|
authenticationRequestAdditionalParameters.put(OidcParameterNames.NONCE, "nonce");
|
|
OAuth2Authorization authorization = TestOAuth2Authorizations.authorization(
|
|
OAuth2Authorization authorization = TestOAuth2Authorizations.authorization(
|
|
@@ -201,6 +204,13 @@ public class JwtGeneratorTests {
|
|
ArgumentCaptor<JwtEncoderParameters> jwtEncoderParametersCaptor = ArgumentCaptor.forClass(JwtEncoderParameters.class);
|
|
ArgumentCaptor<JwtEncoderParameters> jwtEncoderParametersCaptor = ArgumentCaptor.forClass(JwtEncoderParameters.class);
|
|
verify(this.jwtEncoder).encode(jwtEncoderParametersCaptor.capture());
|
|
verify(this.jwtEncoder).encode(jwtEncoderParametersCaptor.capture());
|
|
|
|
|
|
|
|
+ JwsHeader jwsHeader = jwtEncoderParametersCaptor.getValue().getJwsHeader();
|
|
|
|
+ if (OidcParameterNames.ID_TOKEN.equals(tokenContext.getTokenType().getValue())) {
|
|
|
|
+ assertThat(jwsHeader.getAlgorithm()).isEqualTo(tokenContext.getRegisteredClient().getTokenSettings().getIdTokenSignatureAlgorithm());
|
|
|
|
+ } else {
|
|
|
|
+ assertThat(jwsHeader.getAlgorithm()).isEqualTo(SignatureAlgorithm.RS256);
|
|
|
|
+ }
|
|
|
|
+
|
|
JwtClaimsSet jwtClaimsSet = jwtEncoderParametersCaptor.getValue().getClaims();
|
|
JwtClaimsSet jwtClaimsSet = jwtEncoderParametersCaptor.getValue().getClaims();
|
|
assertThat(jwtClaimsSet.getIssuer().toExternalForm()).isEqualTo(tokenContext.getAuthorizationServerContext().getIssuer());
|
|
assertThat(jwtClaimsSet.getIssuer().toExternalForm()).isEqualTo(tokenContext.getAuthorizationServerContext().getIssuer());
|
|
assertThat(jwtClaimsSet.getSubject()).isEqualTo(tokenContext.getAuthorization().getPrincipalName());
|
|
assertThat(jwtClaimsSet.getSubject()).isEqualTo(tokenContext.getAuthorization().getPrincipalName());
|
|
@@ -208,20 +218,14 @@ public class JwtGeneratorTests {
|
|
|
|
|
|
Instant issuedAt = Instant.now();
|
|
Instant issuedAt = Instant.now();
|
|
Instant expiresAt;
|
|
Instant expiresAt;
|
|
- JwsHeader.Builder headersBuilder;
|
|
|
|
if (tokenContext.getTokenType().equals(OAuth2TokenType.ACCESS_TOKEN)) {
|
|
if (tokenContext.getTokenType().equals(OAuth2TokenType.ACCESS_TOKEN)) {
|
|
expiresAt = issuedAt.plus(tokenContext.getRegisteredClient().getTokenSettings().getAccessTokenTimeToLive());
|
|
expiresAt = issuedAt.plus(tokenContext.getRegisteredClient().getTokenSettings().getAccessTokenTimeToLive());
|
|
- headersBuilder = JwsHeader.with(SignatureAlgorithm.RS256);
|
|
|
|
} else {
|
|
} else {
|
|
expiresAt = issuedAt.plus(30, ChronoUnit.MINUTES);
|
|
expiresAt = issuedAt.plus(30, ChronoUnit.MINUTES);
|
|
- headersBuilder = JwsHeader.with(tokenContext.getRegisteredClient().getTokenSettings().getIdTokenSignatureAlgorithm());
|
|
|
|
}
|
|
}
|
|
assertThat(jwtClaimsSet.getIssuedAt()).isBetween(issuedAt.minusSeconds(1), issuedAt.plusSeconds(1));
|
|
assertThat(jwtClaimsSet.getIssuedAt()).isBetween(issuedAt.minusSeconds(1), issuedAt.plusSeconds(1));
|
|
assertThat(jwtClaimsSet.getExpiresAt()).isBetween(expiresAt.minusSeconds(1), expiresAt.plusSeconds(1));
|
|
assertThat(jwtClaimsSet.getExpiresAt()).isBetween(expiresAt.minusSeconds(1), expiresAt.plusSeconds(1));
|
|
|
|
|
|
- JwsHeader jwsHeader = jwtEncoderParametersCaptor.getValue().getJwsHeader();
|
|
|
|
- assertThat(jwsHeader.getAlgorithm()).isEqualTo(headersBuilder.build().getAlgorithm());
|
|
|
|
-
|
|
|
|
if (tokenContext.getTokenType().equals(OAuth2TokenType.ACCESS_TOKEN)) {
|
|
if (tokenContext.getTokenType().equals(OAuth2TokenType.ACCESS_TOKEN)) {
|
|
assertThat(jwtClaimsSet.getNotBefore()).isBetween(issuedAt.minusSeconds(1), issuedAt.plusSeconds(1));
|
|
assertThat(jwtClaimsSet.getNotBefore()).isBetween(issuedAt.minusSeconds(1), issuedAt.plusSeconds(1));
|
|
|
|
|