Загрузки 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 или явную конфигурацию сервера ресурсов. Создание его рядом с неизменённым активным декодером не меняет получение ключей. Если доверенный URL JWKS публичен и публичные посредники разрешены, список HTTP-прокси предлагает кандидатов для хоста и порта транспорта без учётной записи.
Показанный валидатор сохраняет стандартные проверки времени и проверку издателя. При замене декодера сохраните требования к аудитории и все дополнительные валидаторы приложения.
Известный URI ключа обходит обнаружение для его поиска. Если другой компонент всё ещё выполняет обнаружение или получение токенов, настройте маршрут этого клиента отдельно.
Это охватывает проверку реактивных JWT на сервере ресурсов. Servlet-сервер ресурсов, вход через OAuth2 и клиенты бизнес-API имеют другие точки подключения; сохраните неудачный URL ключа и этап вместе с расследованием.