Віддалене завантаження JWK у jose4j через HTTP-проксі
Підключіть екземпляр Get, що враховує проксі, до HttpsJwks і збережіть налаштований екземпляр набору ключів для його кешу та подальших оновлень.
Завантажувач віддаленого набору ключів 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 не виконує цих перевірок.