การดาวน์โหลด 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 พร็อกซีที่ระบุชัดเจนจะถูกส่งไปยัง URL.openConnection(Proxy) ซึ่งจำกัดเส้นทางไว้ที่ตัวโหลดนี้แทนที่จะต้องมีนโยบายพร็อกซีใหม่ทั้ง JVM การพิสูจน์ตัวตนพร็อกซีหากจำเป็นเป็นเรื่องการรับส่งเพิ่มเติม URL ของผู้ออกที่ได้รับอนุมัติและเข้าถึงได้สาธารณะสามารถใช้ที่อยู่ HTTP จาก รายการพร็อกซี HTTP เมื่ออนุญาตตัวกลางสาธารณะและไม่ได้กำหนดค่าบัญชีพร็อกซี
HttpsJwks แคชคีย์แยกตามอินสแตนซ์ โดยอิงจากส่วนหัวแคชและการตั้งค่าระยะเวลาแคชเริ่มต้น เก็บอินสแตนซ์ไว้เพื่อรับประโยชน์นั้น คีย์ที่แคชไว้แล้วสามารถให้การตรวจสอบดำเนินต่อโดยไม่ใช้เครือข่าย ในขณะที่การดึงหรือรีเฟรชในภายหลังยังคงขึ้นอยู่กับเส้นทางที่กำหนดค่าไว้
สิ่งนี้กำหนดค่าการดึงคีย์ การตรวจสอบโทเค็นยังต้องใช้นโยบายการตรวจสอบปกติของแอปพลิเคชันสำหรับลายเซ็น ผู้ออก ผู้ชม และการตรวจสอบอื่น ๆ การได้มาซึ่งชุดคีย์ JSON เพียงอย่างเดียวไม่ได้ทำการตรวจสอบเหล่านั้น