Baixades de JWKS amb proxy per al descodificador JWT reactiu de Spring
Inseriu el client a NimbusReactiveJwtDecoder i mantingueu les comprovacions existents d'emissor, audiència i altres testimonis en connectar-lo 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));Utilitzeu els valors de confiança jwkSetUri/issuer i instal·leu aquest descodificador mitjançant el bean real ReactiveJwtDecoder o una configuració explícita del servidor de recursos. Crear-lo al costat d'un descodificador actiu sense canvis no altera l'obtenció de claus. Si l'URL JWKS de confiança és públic i es permeten intermediaris públics, la llista de proxys HTTP ofereix candidats per a l'amfitrió i el port del transport sense compte.
El validador mostrat conserva les comprovacions de temps per defecte i la validació de l'emissor. Mantingueu els requisits d'audiència i tots els validadors addicionals de l'aplicació quan substituïu el descodificador.
Un URI de clau conegut evita el descobriment per localitzar-la. Si un altre component encara fa descobriment o adquisició de testimonis, configureu la ruta d'aquell client per separat.
Això cobreix la verificació de JWT reactius al servidor de recursos. El servidor de recursos Servlet, l'inici de sessió OAuth2 i els clients d'API de negoci tenen altres punts d'enganxament; conserveu l'URL de clau fallida i l'etapa amb la investigació.