Browse Source

Provider Default Timeouts For JWK Retrieval

Issue gh-14269

Signed-off-by: Fridolin Jackstadt <fridolin.jackstadt@unic.com>
pull/17381/head
Fridolin Jackstadt 5 months ago committed by Josh Cummings
parent
commit
910df479be
  1. 18
      oauth2/oauth2-jose/src/main/java/org/springframework/security/oauth2/jwt/NimbusJwtDecoder.java

18
oauth2/oauth2-jose/src/main/java/org/springframework/security/oauth2/jwt/NimbusJwtDecoder.java

@ -66,6 +66,7 @@ import org.springframework.http.HttpMethod; @@ -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 { @@ -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 { @@ -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.
*/

Loading…
Cancel
Save