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

Utilisez les valeurs de confiance jwkSetUri/issuer et installez ce décodeur via le bean ReactiveJwtDecoder réel ou une configuration explicite du serveur de ressources. Le créer à côté d'un décodeur actif inchangé ne modifie pas la récupération des clés. Si l'URL JWKS de confiance est publique et que les intermédiaires publics sont autorisés, la liste de proxies HTTP fournit des candidats pour l'hôte et le port du transport sans compte.

Le validateur affiché conserve les contrôles de temps par défaut et la validation de l'émetteur. Conservez les exigences d'audience et tous les validateurs applicatifs supplémentaires lorsque vous remplacez le décodeur.

Un URI de clé connu contourne la découverte pour la localiser. Si un autre composant effectue encore la découverte ou l'acquisition de jetons, configurez l'itinéraire de ce client séparément.

Cela couvre la vérification des JWT réactifs sur le serveur de ressources. Le serveur de ressources Servlet, la connexion OAuth2 et les clients d'API métier ont d'autres points d'accroche ; conservez l'URL de clé en échec et l'étape avec l'investigation.

Articles similaires