Spring NimbusJwtDecoder: проксирање преузимања JWK скупа
Дајте servlet декодеру RestTemplate који познаје прокси и задржите валидаторе issuer, audience и додатне валидаторе токена при замени аутоматске конфигурације.
Долазни bearer захтев може стићи до сервера ресурса док верификација JWT не успе на одлазном преузимању JWK. Конфигуришите HTTP клијент који тај декодер користи:
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));Користите стварне jwkSetUri и issuer апликације и инсталирајте овај декодер у стварну конфигурацију сервера ресурса. Пример користи неаутентификовани HTTP прокси са Nimbus декодером у servlet стилу. За јавни JWK URL на дозвољеној рути јавног проксија, листа HTTP проксија нуди могуће вредности хоста и порта.
Валидатор issuer у примеру није замена за обавезне провере audience или друге провере апликације. Задржите их при замени аутоматски конфигурисаног декодера; промена руте преузимања кључа не одређује које токене апликација треба да прихвати.
Реактивни декодер користи друго сучеље. Други клијенти за откривање issuer или прибављање токена такође задржавају сопствену транспортну конфигурацију.
Кеширани кључеви могу омогућити успешну верификацију без новог преузимања. Задржите URL неуспешног кључа и фазу освежавања или иницијализације при процени руте.