ตัวโหลดชุดคีย์จากระยะไกลของ 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 เพียงอย่างเดียวไม่ได้ทำการตรวจสอบเหล่านั้น

บทความที่เกี่ยวข้อง