Spring NimbusJwtDecoder: proxy download af JWK-sættet
Giv servlet-dekoderen en proxybevidst RestTemplate, og bevar issuer-, audience- og ekstra tokenvalidatorer, når den automatiske konfiguration erstattes.
En indgående bearer-anmodning kan nå ressourceserveren, mens JWT-verifikation fejler ved en udgående JWK-download. Konfigurer den HTTP-klient, som dekoderen bruger:
var factory = new org.springframework.http.client.SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
var rest = new org.springframework.web.client.RestTemplate(factory);
var decoder = org.springframework.security.oauth2.jwt.NimbusJwtDecoder
.withJwkSetUri(jwkSetUri)
.restOperations(rest)
.build();
decoder.setJwtValidator(
org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));Brug applikationens rigtige jwkSetUri og issuer, og installér denne dekoder i den faktiske ressourceserver-konfiguration. Eksemplet bruger en uautentificeret HTTP-proxy med servlet-stil Nimbus-dekoderen. For en offentlig JWK-URL på en tilladt offentlig proxy-rute giver HTTP-proxy-listen kandidatværdier for vært og port.
Issuer-validatoren i eksemplet erstatter ikke påkrævede audience-kontroller eller andre applikationskontroller. Bevar dem, når en automatisk konfigureret dekoder erstattes; ændring af nøgle-download-ruten definerer ikke, hvilke tokens applikationen skal acceptere.
En reaktiv dekoder bruger en anden grænseflade. Andre klienter til issuer-opdagelse eller token-anskaffelse beholder også deres egen transportkonfiguration.
Cachelagrede nøgler kan få verifikationen til at lykkes uden en ny download. Bevar den fejlede nøgle-URL og opdaterings- eller initialiseringsfasen, når ruten vurderes.