|  | @@ -251,10 +251,12 @@ public class OAuth2AuthorizationCodeAuthenticationProviderTests {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Test
 | 
	
		
			
				|  |  | -	public void authenticateWhenRefreshTokenTimeToLiveConfiguredThenRefreshTokenExpirySet() {
 | 
	
		
			
				|  |  | +	public void authenticateWhenTokenTimeToLiveConfiguredThenTokenExpirySet() {
 | 
	
		
			
				|  |  | +		Duration accessTokenTTL = Duration.ofHours(2);
 | 
	
		
			
				|  |  |  		Duration refreshTokenTTL = Duration.ofDays(1);
 | 
	
		
			
				|  |  |  		RegisteredClient registeredClient = TestRegisteredClients.registeredClient()
 | 
	
		
			
				|  |  | -				.tokenSettings(tokenSettings -> tokenSettings.refreshTokenTimeToLive(refreshTokenTTL))
 | 
	
		
			
				|  |  | +				.tokenSettings(tokenSettings ->
 | 
	
		
			
				|  |  | +						tokenSettings.accessTokenTimeToLive(accessTokenTTL).refreshTokenTimeToLive(refreshTokenTTL))
 | 
	
		
			
				|  |  |  				.build();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		OAuth2Authorization authorization = TestOAuth2Authorizations.authorization(registeredClient).build();
 | 
	
	
		
			
				|  | @@ -267,7 +269,9 @@ public class OAuth2AuthorizationCodeAuthenticationProviderTests {
 | 
	
		
			
				|  |  |  		OAuth2AuthorizationCodeAuthenticationToken authentication =
 | 
	
		
			
				|  |  |  				new OAuth2AuthorizationCodeAuthenticationToken(AUTHORIZATION_CODE, clientPrincipal, authorizationRequest.getRedirectUri(), null);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		when(this.jwtEncoder.encode(any(), any())).thenReturn(createJwt());
 | 
	
		
			
				|  |  | +		Instant accessTokenIssuedAt = Instant.now();
 | 
	
		
			
				|  |  | +		Instant accessTokenExpiresAt = accessTokenIssuedAt.plus(accessTokenTTL);
 | 
	
		
			
				|  |  | +		when(this.jwtEncoder.encode(any(), any())).thenReturn(createJwt(accessTokenIssuedAt, accessTokenExpiresAt));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		OAuth2AccessTokenAuthenticationToken accessTokenAuthentication =
 | 
	
		
			
				|  |  |  				(OAuth2AccessTokenAuthenticationToken) this.authenticationProvider.authenticate(authentication);
 | 
	
	
		
			
				|  | @@ -276,6 +280,11 @@ public class OAuth2AuthorizationCodeAuthenticationProviderTests {
 | 
	
		
			
				|  |  |  		verify(this.authorizationService).save(authorizationCaptor.capture());
 | 
	
		
			
				|  |  |  		OAuth2Authorization updatedAuthorization = authorizationCaptor.getValue();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		assertThat(accessTokenAuthentication.getAccessToken()).isEqualTo(updatedAuthorization.getTokens().getAccessToken());
 | 
	
		
			
				|  |  | +		Instant expectedAccessTokenExpiresAt = accessTokenAuthentication.getAccessToken().getIssuedAt().plus(accessTokenTTL);
 | 
	
		
			
				|  |  | +		assertThat(accessTokenAuthentication.getAccessToken().getExpiresAt()).isBetween(
 | 
	
		
			
				|  |  | +				expectedAccessTokenExpiresAt.minusSeconds(1), expectedAccessTokenExpiresAt.plusSeconds(1));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		assertThat(accessTokenAuthentication.getRefreshToken()).isEqualTo(updatedAuthorization.getTokens().getRefreshToken());
 | 
	
		
			
				|  |  |  		Instant expectedRefreshTokenExpiresAt = accessTokenAuthentication.getRefreshToken().getIssuedAt().plus(refreshTokenTTL);
 | 
	
		
			
				|  |  |  		assertThat(accessTokenAuthentication.getRefreshToken().getExpiresAt()).isBetween(
 | 
	
	
		
			
				|  | @@ -309,6 +318,10 @@ public class OAuth2AuthorizationCodeAuthenticationProviderTests {
 | 
	
		
			
				|  |  |  	private static Jwt createJwt() {
 | 
	
		
			
				|  |  |  		Instant issuedAt = Instant.now();
 | 
	
		
			
				|  |  |  		Instant expiresAt = issuedAt.plus(1, ChronoUnit.HOURS);
 | 
	
		
			
				|  |  | +		return createJwt(issuedAt, expiresAt);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private static Jwt createJwt(Instant issuedAt, Instant expiresAt) {
 | 
	
		
			
				|  |  |  		return Jwt.withTokenValue("token")
 | 
	
		
			
				|  |  |  				.header(JoseHeaderNames.ALG, SignatureAlgorithm.RS256.getName())
 | 
	
		
			
				|  |  |  				.issuedAt(issuedAt)
 |