Descargas de JWKS mediante proxy para el decodificador JWT reactivo de Spring
Inyecte el cliente en NimbusReactiveJwtDecoder y conserve las comprobaciones existentes de emisor, audiencia y otros tokens al conectarlo al servidor de recursos.
var transport = reactor.netty.http.client.HttpClient.create()
.proxy(spec -> spec
.type(reactor.netty.transport.ProxyProvider.Proxy.HTTP)
.host("proxy.example")
.port(8080));
var webClient = org.springframework.web.reactive.function.client.WebClient
.builder()
.clientConnector(new org.springframework.http.client.reactive
.ReactorClientHttpConnector(transport))
.build();
var decoder = org.springframework.security.oauth2.jwt.NimbusReactiveJwtDecoder
.withJwkSetUri(jwkSetUri)
.webClient(webClient)
.build();
decoder.setJwtValidator(org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));Utilice los valores de confianza jwkSetUri/issuer e instale este decodificador mediante el bean real ReactiveJwtDecoder o una configuración explícita del servidor de recursos. Crearlo junto a un decodificador activo sin cambios no altera la obtención de claves. Si la URL de JWKS de confianza es pública y se permiten intermediarios públicos, la lista de proxies HTTP ofrece candidatos para el host y el puerto del transporte sin cuenta.
El validador mostrado conserva las comprobaciones de tiempo predeterminadas y la validación del emisor. Mantenga los requisitos de audiencia y todos los validadores adicionales de la aplicación al sustituir el decodificador.
Una URI de clave conocida evita el descubrimiento para localizarla. Si otro componente sigue realizando descubrimiento o adquisición de tokens, configure la ruta de ese cliente por separado.
Esto cubre la verificación de JWT reactivos en el servidor de recursos. El servidor de recursos Servlet, el inicio de sesión OAuth2 y los clientes de API empresariales tienen otros puntos de enganche; conserve la URL de clave fallida y la etapa con la investigación.