Spring NimbusJwtDecoder: JWK 세트 다운로드를 프록시로 전송
servlet 디코더에 프록시를 인식하는 RestTemplate을 제공하고 자동 구성을 교체할 때 issuer, audience 및 추가 토큰 검증기를 유지하세요.
들어오는 bearer 요청이 리소스 서버에 도달해도 아웃바운드 JWK 다운로드에서 JWT 검증이 실패할 수 있습니다. 해당 디코더가 사용하는 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를 사용하고 이 디코더를 실제 리소스 서버 구성에 설치하세요. 예제는 servlet 스타일 Nimbus 디코더와 인증 없는 HTTP 프록시를 사용합니다. 허용된 공용 프록시 경로의 공용 JWK URL에 대해서는 HTTP 프록시 목록이 후보 호스트와 포트 값을 제공합니다.
예제의 issuer 검증기는 필수 audience 또는 다른 애플리케이션 검사를 대신하지 않습니다. 자동 구성된 디코더를 교체할 때 이를 유지하세요. 키 다운로드 경로를 바꾸는 것은 애플리케이션이 어떤 토큰을 받아들여야 하는지 정의하지 않습니다.
reactive 디코더는 다른 인터페이스를 사용합니다. issuer 검색이나 토큰 획득을 담당하는 다른 클라이언트도 자체 전송 구성을 유지합니다.
캐시된 키가 있으면 새 다운로드 없이도 검증이 성공할 수 있습니다. 경로를 평가할 때 실패한 키 URL과 새로 고침 또는 초기화 단계를 기록하세요.