Una petición bearer entrante puede llegar al servidor de recursos mientras la verificación JWT falla en una descarga JWK saliente. Configure el cliente HTTP que usa ese decodificador:

var factory = new org.springframework.http.client.SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
var rest = new org.springframework.web.client.RestTemplate(factory);

var decoder = org.springframework.security.oauth2.jwt.NimbusJwtDecoder
    .withJwkSetUri(jwkSetUri)
    .restOperations(rest)
    .build();
decoder.setJwtValidator(
    org.springframework.security.oauth2.jwt.JwtValidators
        .createDefaultWithIssuer(issuer));

Use los jwkSetUri y issuer reales de la aplicación e instale este decodificador en la configuración real del servidor de recursos. El ejemplo usa un proxy HTTP no autenticado con el decodificador Nimbus de estilo servlet. Para una URL JWK pública en una ruta de proxy público permitida, la lista de proxies HTTP ofrece valores candidatos de host y puerto.

El validador de issuer del ejemplo no sustituye las comprobaciones de audiencia obligatorias ni otras comprobaciones de la aplicación. Consérvelas al sustituir un decodificador configurado automáticamente; cambiar la ruta de descarga de claves no define qué tokens debe aceptar la aplicación.

Un decodificador reactivo usa otra interfaz. Otros clientes de descubrimiento de issuer o de obtención de tokens también mantienen su propia configuración de transporte.

Las claves en caché pueden hacer que la verificación tenga éxito sin una nueva descarga. Conserve la URL de la clave fallida y la etapa de actualización o inicialización al evaluar la ruta.

Artículos relacionados