تنزيلات jose4j البعيدة لمفاتيح JWK عبر وسيط HTTP
اربط كائن Get المدرك للوسيط بـ HttpsJwks واحتفظ بكائن مجموعة المفاتيح المهيأ لاستخدام ذاكرته المؤقتة وعمليات التحديث اللاحقة.
لمُحمّل مجموعة المفاتيح البعيد في jose4j كائن استرداد HTTP خاص به. اضبط ذلك الكائن عندما يستطيع التطبيق استدعاء واجهة برمجية لكنه لا يستطيع تنزيل مفاتيح JSON Web Keys الخاصة بالمُصدر.
توفر واجهة 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 وحدها لا ينفذ تلك الفحوص.