1
0
mirror of synced 2026-05-22 21:33:16 +00:00

Provider Default Timeouts For JWK Retrieval

Issue gh-14269

Signed-off-by: Fridolin Jackstadt <fridolin.jackstadt@unic.com>
This commit is contained in:
Fridolin Jackstadt
2025-08-23 15:03:04 +02:00
committed by Josh Cummings
parent 9866435946
commit 910df479be
@@ -66,6 +66,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.security.oauth2.core.OAuth2Error;
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult;
@@ -294,7 +295,7 @@ public final class NimbusJwtDecoder implements JwtDecoder {
private final Set<SignatureAlgorithm> signatureAlgorithms = new HashSet<>();
private RestOperations restOperations = new RestTemplate();
private RestOperations restOperations = new RestTemplateWithNimbusDefaultTimeouts();
private Cache cache = new NoOpCache("default");
@@ -556,6 +557,21 @@ public final class NimbusJwtDecoder implements JwtDecoder {
}
/**
* A RestTemplate with timeouts configured to avoid blocking indefinitely when
* fetching JWK Sets while holding the reentrantLock.
*/
private static final class RestTemplateWithNimbusDefaultTimeouts extends RestTemplate {
private RestTemplateWithNimbusDefaultTimeouts() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(JWKSourceBuilder.DEFAULT_HTTP_CONNECT_TIMEOUT);
requestFactory.setReadTimeout(JWKSourceBuilder.DEFAULT_HTTP_READ_TIMEOUT);
setRequestFactory(requestFactory);
}
}
/**
* A builder for creating {@link NimbusJwtDecoder} instances based on a public key.
*/