JWKS изтегляния през прокси за реактивния JWT декодер на Spring
Вмъкнете клиента в NimbusReactiveJwtDecoder и запазете съществуващите проверки на издателя, аудиторията и другите токени при свързване със сървъра за ресурси.
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));Използвайте доверените стойности jwkSetUri/issuer и инсталирайте този декодер чрез действителния бин ReactiveJwtDecoder или чрез явна конфигурация на сървъра за ресурси. Създаването му до непроменен активен декодер не променя извличането на ключове. Ако довереният JWKS URL е публичен и публичните посредници са разрешени, списъкът с HTTP проксита дава кандидати за хоста и порта на транспорта без акаунт.
Показаният валидатор запазва проверките по подразбиране за време и валидирането на издателя. Запазете изискванията за аудитория и всички допълнителни валидатори на приложението при подмяна на декодера.
Известен URI на ключ заобикаля откриването за намирането му. Ако друг компонент все още извършва откриване или получаване на токен, конфигурирайте маршрута на този клиент отделно.
Това покрива проверката на реактивни JWT на сървъра за ресурси. Servlet сървърът за ресурси, входът с OAuth2 и клиентите на бизнес API имат други точки за свързване; пазете неуспешния URL на ключа и етапа заедно с разследването.