Skip to content

Commit 910df47

Browse files
Fridolin Jackstadtjzheaux
authored andcommitted
Provider Default Timeouts For JWK Retrieval
Issue gh-14269 Signed-off-by: Fridolin Jackstadt <[email protected]>
1 parent 9866435 commit 910df47

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import org.springframework.http.MediaType;
6767
import org.springframework.http.RequestEntity;
6868
import org.springframework.http.ResponseEntity;
69+
import org.springframework.http.client.SimpleClientHttpRequestFactory;
6970
import org.springframework.security.oauth2.core.OAuth2Error;
7071
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
7172
import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult;
@@ -294,7 +295,7 @@ public static final class JwkSetUriJwtDecoderBuilder {
294295

295296
private final Set<SignatureAlgorithm> signatureAlgorithms = new HashSet<>();
296297

297-
private RestOperations restOperations = new RestTemplate();
298+
private RestOperations restOperations = new RestTemplateWithNimbusDefaultTimeouts();
298299

299300
private Cache cache = new NoOpCache("default");
300301

@@ -556,6 +557,21 @@ public void close() {
556557

557558
}
558559

560+
/**
561+
* A RestTemplate with timeouts configured to avoid blocking indefinitely when
562+
* fetching JWK Sets while holding the reentrantLock.
563+
*/
564+
private static final class RestTemplateWithNimbusDefaultTimeouts extends RestTemplate {
565+
566+
private RestTemplateWithNimbusDefaultTimeouts() {
567+
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
568+
requestFactory.setConnectTimeout(JWKSourceBuilder.DEFAULT_HTTP_CONNECT_TIMEOUT);
569+
requestFactory.setReadTimeout(JWKSourceBuilder.DEFAULT_HTTP_READ_TIMEOUT);
570+
setRequestFactory(requestFactory);
571+
}
572+
573+
}
574+
559575
/**
560576
* A builder for creating {@link NimbusJwtDecoder} instances based on a public key.
561577
*/

0 commit comments

Comments
 (0)