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ó.

Articles relacionats