jose4j의 원격 키 집합 로더에는 자체 HTTP 검색 개체가 있습니다. 애플리케이션이 API를 호출할 수 있지만 발급자의 JSON Web Keys를 다운로드할 수 없을 때 이 개체를 구성합니다.

jose4j 0.9.6 API는 Get.setHttpProxy와 HttpsJwks.setSimpleHttpGet을 제공합니다:

org.jose4j.http.Get downloader = new org.jose4j.http.Get();
downloader.setHttpProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
downloader.setConnectTimeout(5000);
downloader.setReadTimeout(15000);

org.jose4j.jwk.HttpsJwks jwks = new org.jose4j.jwk.HttpsJwks(
    "https://issuer.example/keys");
jwks.setSimpleHttpGet(downloader);

이 구성된 jwks 개체를 애플리케이션의 키 확인 구성에 사용합니다. 기존 확인자 옆에 만들어도 확인자의 다른 인스턴스는 바뀌지 않습니다.

Get은 URL과 HttpsURLConnection을 사용합니다. 명시적 Proxy는 URL.openConnection(Proxy)에 전달됩니다. 이렇게 하면 JVM 전체에 새 프록시 정책이 필요하지 않고 경로가 이 로더로 한정됩니다. 프록시 인증이 필요하면 이는 추가 전송 계층 문제입니다. 승인된 공개적으로 접근 가능한 발급자 URL은 공용 중개자가 허용되고 프록시 계정이 구성되지 않은 경우 HTTP 프록시 목록의 HTTP 주소를 사용할 수 있습니다.

HttpsJwks는 캐시 헤더와 기본 캐시 기간 설정에 따라 인스턴스별로 키를 캐시합니다. 그 이점을 얻으려면 인스턴스를 유지하십시오. 이미 캐시된 키는 네트워크를 사용하지 않고도 검증을 계속할 수 있게 하지만, 이후 검색이나 새로 고침은 여전히 구성된 경로에 의존합니다.

이것은 키 검색을 구성합니다. 토큰 검증에는 여전히 서명, 발급자, 대상 그룹 및 기타 검증 정책이 필요합니다. JSON 키 집합을 얻는 것만으로는 이러한 검사를 수행하지 않습니다.

관련 글