JWKS-downloads via proxy voor Springs reactieve JWT-decoder
Injecteer de client in NimbusReactiveJwtDecoder en behoud de bestaande controles op issuer, audience en andere tokens wanneer u hem op de resourceserver aansluit.
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));Gebruik de vertrouwde jwkSetUri/issuer-waarden en installeer deze decoder via de daadwerkelijke ReactiveJwtDecoder-bean of een expliciete configuratie van de resourceserver. Hem naast een ongewijzigde actieve decoder aanmaken verandert het ophalen van sleutels niet. Als de vertrouwde JWKS-URL openbaar is en openbare tussenpartijen zijn toegestaan, levert de HTTP-proxylijst kandidaten voor de host en poort van het transport zonder account.
De getoonde validator behoudt de standaardtijdcontroles en de issuer-validatie. Behoud de audience-eisen en alle aanvullende applicatievalidatoren wanneer u de decoder vervangt.
Een bekende sleutel-URI omzeilt discovery om hem te lokaliseren. Als een ander onderdeel nog steeds discovery of tokenverwerving uitvoert, configureer dan de route van die client apart.
Dit dekt reactieve JWT-verificatie op de resourceserver. De Servlet-resourceserver, OAuth2-login en zakelijke API-clients hebben andere haken; bewaar de mislukte sleutel-URL en de fase bij het onderzoek.