@@ -152,7 +152,10 @@ public void generateWhenAccessTokenTypeThenReturnJwt() {
152
152
153
153
@ Test
154
154
public void generateWhenIdTokenTypeThenReturnJwt () {
155
- RegisteredClient registeredClient = TestRegisteredClients .registeredClient ().scope (OidcScopes .OPENID ).build ();
155
+ RegisteredClient registeredClient = TestRegisteredClients .registeredClient ()
156
+ .scope (OidcScopes .OPENID )
157
+ .tokenSettings (TokenSettings .builder ().idTokenSignatureAlgorithm (SignatureAlgorithm .ES256 ).build ())
158
+ .build ();
156
159
Map <String , Object > authenticationRequestAdditionalParameters = new HashMap <>();
157
160
authenticationRequestAdditionalParameters .put (OidcParameterNames .NONCE , "nonce" );
158
161
OAuth2Authorization authorization = TestOAuth2Authorizations .authorization (
@@ -201,27 +204,28 @@ private void assertGeneratedTokenType(OAuth2TokenContext tokenContext) {
201
204
ArgumentCaptor <JwtEncoderParameters > jwtEncoderParametersCaptor = ArgumentCaptor .forClass (JwtEncoderParameters .class );
202
205
verify (this .jwtEncoder ).encode (jwtEncoderParametersCaptor .capture ());
203
206
207
+ JwsHeader jwsHeader = jwtEncoderParametersCaptor .getValue ().getJwsHeader ();
208
+ if (OidcParameterNames .ID_TOKEN .equals (tokenContext .getTokenType ().getValue ())) {
209
+ assertThat (jwsHeader .getAlgorithm ()).isEqualTo (tokenContext .getRegisteredClient ().getTokenSettings ().getIdTokenSignatureAlgorithm ());
210
+ } else {
211
+ assertThat (jwsHeader .getAlgorithm ()).isEqualTo (SignatureAlgorithm .RS256 );
212
+ }
213
+
204
214
JwtClaimsSet jwtClaimsSet = jwtEncoderParametersCaptor .getValue ().getClaims ();
205
215
assertThat (jwtClaimsSet .getIssuer ().toExternalForm ()).isEqualTo (tokenContext .getAuthorizationServerContext ().getIssuer ());
206
216
assertThat (jwtClaimsSet .getSubject ()).isEqualTo (tokenContext .getAuthorization ().getPrincipalName ());
207
217
assertThat (jwtClaimsSet .getAudience ()).containsExactly (tokenContext .getRegisteredClient ().getClientId ());
208
218
209
219
Instant issuedAt = Instant .now ();
210
220
Instant expiresAt ;
211
- JwsHeader .Builder headersBuilder ;
212
221
if (tokenContext .getTokenType ().equals (OAuth2TokenType .ACCESS_TOKEN )) {
213
222
expiresAt = issuedAt .plus (tokenContext .getRegisteredClient ().getTokenSettings ().getAccessTokenTimeToLive ());
214
- headersBuilder = JwsHeader .with (SignatureAlgorithm .RS256 );
215
223
} else {
216
224
expiresAt = issuedAt .plus (30 , ChronoUnit .MINUTES );
217
- headersBuilder = JwsHeader .with (tokenContext .getRegisteredClient ().getTokenSettings ().getIdTokenSignatureAlgorithm ());
218
225
}
219
226
assertThat (jwtClaimsSet .getIssuedAt ()).isBetween (issuedAt .minusSeconds (1 ), issuedAt .plusSeconds (1 ));
220
227
assertThat (jwtClaimsSet .getExpiresAt ()).isBetween (expiresAt .minusSeconds (1 ), expiresAt .plusSeconds (1 ));
221
228
222
- JwsHeader jwsHeader = jwtEncoderParametersCaptor .getValue ().getJwsHeader ();
223
- assertThat (jwsHeader .getAlgorithm ()).isEqualTo (headersBuilder .build ().getAlgorithm ());
224
-
225
229
if (tokenContext .getTokenType ().equals (OAuth2TokenType .ACCESS_TOKEN )) {
226
230
assertThat (jwtClaimsSet .getNotBefore ()).isBetween (issuedAt .minusSeconds (1 ), issuedAt .plusSeconds (1 ));
227
231
0 commit comments