Загрузчик удалённого набора ключей jose4j имеет собственный объект HTTP-получения. Настройте этот объект, когда приложение может вызвать API, но не может загрузить JSON Web Keys издателя.

API jose4j 0.9.6 предоставляет 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 не выполняет эти проверки.

Похожие статьи