jose4j ၏ အဝေးမှ JWK ဒေါင်းလုဒ်များ HTTP proxy မှတစ်ဆင့်
Proxy ကို သိသော Get instance ကို HttpsJwks နှင့် ချိတ်ဆက်ပြီး ပြင်ဆင်ထားသော key-set instance ကို ၎င်း၏ cache နှင့် နောက်ပိုင်း refresh များအတွက် ထိန်းသိမ်းထားပါ။
jose4j ၏ အဝေးမှ key-set loader တွင် ကိုယ်ပိုင် HTTP ရယူမှု object ရှိသည်။ application က API ကို ခေါ်နိုင်သော်လည်း ထုတ်ပေးသူ၏ JSON Web Keys ကို ဒေါင်းလုဒ်မလုပ်နိုင်သောအခါ ထို object ကို ပြင်ဆင်ပါ။
jose4j 0.9.6 API သည် 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 object ကို application ၏ key-resolution အစီအစဉ်တွင် အသုံးပြုပါ။ ရှိပြီးသား resolver ၏ ဘေးတွင် ၎င်းကို ဖန်တီးခြင်းသည် resolver ၏ အခြား instance ကို မပြောင်းလဲစေပါ။
Get သည် URL နှင့် HttpsURLConnection ကို အသုံးပြုသည်။ တိကျသော Proxy ကို URL.openConnection(Proxy) သို့ ပေးပို့သည်; ၎င်းသည် JVM တစ်ခုလုံးအတွက် proxy မူဝါဒအသစ် မလိုအပ်ဘဲ လမ်းကြောင်းကို ဤ loader တွင်သာ ကန့်သတ်သည်။ Proxy authentication လိုအပ်ပါက နောက်ထပ် သယ်ယူပို့ဆောင်ရေး ကိစ္စဖြစ်သည်။ အတည်ပြုထားပြီး အများသူငှာ ရောက်ရှိနိုင်သော ထုတ်ပေးသူ URL သည် အများသူငှာ ကြားခံများကို ခွင့်ပြုပြီး proxy အကောင့် မပြင်ဆင်ထားသောအခါ HTTP proxy စာရင်းမှ HTTP လိပ်စာကို အသုံးပြုနိုင်သည်။
HttpsJwks သည် cache header များနှင့် ၎င်း၏ မူလ cache ကြာချိန် ဆက်တင်အပေါ် အခြေခံ၍ instance တစ်ခုစီအတွက် key များကို cache လုပ်သည်။ ထိုအကျိုးကို ရရှိရန် instance ကို ထိန်းသိမ်းထားပါ။ ရှိပြီးသား cache လုပ်ထားသော key သည် ကွန်ရက်ကို အသုံးမပြုဘဲ အတည်ပြုခြင်းကို ဆက်လုပ်နိုင်စေပြီး နောက်ပိုင်း ရယူမှု သို့မဟုတ် refresh သည် ပြင်ဆင်ထားသော လမ်းကြောင်းအပေါ် မှီခိုနေဆဲဖြစ်သည်။
၎င်းသည် key ရယူမှုကို ပြင်ဆင်သည်။ Token အတည်ပြုခြင်းသည် application ၏ ပုံမှန် လက်မှတ်၊ ထုတ်ပေးသူ၊ ပရိသတ် နှင့် အခြား အတည်ပြုမှု မူဝါဒကို လိုအပ်ဆဲဖြစ်သည်; JSON key-set တစ်ခုတည်း ရရှိခြင်းက ထိုစစ်ဆေးမှုများကို မလုပ်ဆောင်ပါ။