JWKS-Downloads über Proxy für Springs reaktiven JWT-Decoder
Binden Sie den Client in NimbusReactiveJwtDecoder ein und behalten Sie die bestehenden Prüfungen von Issuer, Audience und anderen Token bei, wenn Sie ihn in den Resource-Server einbinden.
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));Verwenden Sie die vertrauenswürdigen jwkSetUri/issuer-Werte und installieren Sie diesen Decoder über die tatsächliche ReactiveJwtDecoder-Bean oder eine explizite Resource-Server-Konfiguration. Wird er neben einem unveränderten aktiven Decoder erzeugt, ändert das den Schlüsselabruf nicht. Ist die vertrauenswürdige JWKS-URL öffentlich und sind öffentliche Vermittler zulässig, liefert die HTTP-Proxy-Liste Kandidaten für Host und Port des Transports ohne Konto.
Der gezeigte Validator behält die Standard-Zeitprüfungen und die Issuer-Validierung bei. Behalten Sie Audience-Anforderungen und alle zusätzlichen Anwendungsvalidatoren beim Ersetzen des Decoders bei.
Eine bekannte Schlüssel-URI umgeht die Discovery zu ihrer Lokalisierung. Führt eine andere Komponente weiterhin Discovery oder Token-Beschaffung durch, konfigurieren Sie die Route dieses Clients separat.
Dies deckt die reaktive JWT-Verifikation im Resource-Server ab. Servlet-Resource-Server, OAuth2-Login und Business-API-Clients haben andere Anknüpfungspunkte; bewahren Sie die fehlgeschlagene Schlüssel-URL und die Phase bei der Untersuchung auf.