Skip to content

Commit 0ce9d27

Browse files
author
Fridolin Jackstadt
committed
Provider Default Timeouts For JWK Retrieval
Issue gh-14269 Signed-off-by: Fridolin Jackstadt <[email protected]>
1 parent 6f1232c commit 0ce9d27

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;
@@ -293,7 +294,7 @@ public static final class JwkSetUriJwtDecoderBuilder {
293294

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

296-
private RestOperations restOperations = new RestTemplate();
297+
private RestOperations restOperations = new RestTemplateWithNimbusDefaultTimeouts();
297298

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

@@ -545,6 +546,21 @@ public void close() {
545546

546547
}
547548

549+
/**
550+
* A RestTemplate with timeouts configured to avoid blocking indefinitely when
551+
* fetching JWK Sets while holding the reentrantLock.
552+
*/
553+
private static final class RestTemplateWithNimbusDefaultTimeouts extends RestTemplate {
554+
555+
private RestTemplateWithNimbusDefaultTimeouts() {
556+
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
557+
requestFactory.setConnectTimeout(JWKSourceBuilder.DEFAULT_HTTP_CONNECT_TIMEOUT);
558+
requestFactory.setReadTimeout(JWKSourceBuilder.DEFAULT_HTTP_READ_TIMEOUT);
559+
setRequestFactory(requestFactory);
560+
}
561+
562+
}
563+
548564
/**
549565
* A builder for creating {@link NimbusJwtDecoder} instances based on a public key.
550566
*/

0 commit comments

Comments
 (0)