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));

Brug de betroede jwkSetUri/issuer-værdier, og installer denne dekoder via den faktiske ReactiveJwtDecoder-bean eller en eksplicit konfiguration af ressursserveren. At oprette den ved siden af en uændret aktiv dekoder ændrer ikke hentningen af nøgler. Hvis den betroede JWKS-URL er offentlig, og offentlige mellemled er tilladt, giver HTTP-proxylisten kandidater til transportens host og port uden konto.

Den viste validator bevarer standardtidskontrollerne og valideringen af issuer. Behold audience-kravene og alle ekstra applikationsvalidatorer, når du udskifter dekoderen.

En kendt nøgle-URI omgår discovery ved at lokalisere den. Hvis en anden komponent stadig udfører discovery eller tokenanskaffelse, skal du konfigurere den klients rute separat.

Dette dækker reaktiv JWT-verifikation på ressursserveren. Servlet-ressursserveren, OAuth2-login og forretnings-API-klienter har andre hooks; gem den mislykkede nøgle-URL og stadiet sammen med undersøgelsen.

Relaterede artikler