Spring NimbusJwtDecoder: JWK အစုအဝေး ဒေါင်းလုဒ်ကို ပရောက်ဆီဖြင့် ပို့ဆောင်ခြင်း
servlet ဒီကုဒ်ဒါအား ပရောက်ဆီကို သိသော RestTemplate ပေးပြီး အလိုအလျောက် ဖွဲ့စည်းမှုကို အစားထိုးစဉ် issuer၊ audience နှင့် အပိုတိုကင် အတည်ပြုစစ်ဆေးသူများကို ထိန်းသိမ်းပါ။
ဝင်လာသော bearer တောင်းဆိုချက်သည် အရင်းအမြစ်ဆာဗာသို့ ရောက်နိုင်သော်လည်း JWT အတည်ပြုစစ်ဆေးမှုသည် အပြင်သို့ ထွက်သော JWK ဒေါင်းလုဒ်တွင် မအောင်မြင်ပါ။ ထို ဒီကုဒ်ဒါ အသုံးပြုသော HTTP ဖောက်သည်ကို ဖွဲ့စည်းပါ။
var factory = new org.springframework.http.client.SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
var rest = new org.springframework.web.client.RestTemplate(factory);
var decoder = org.springframework.security.oauth2.jwt.NimbusJwtDecoder
.withJwkSetUri(jwkSetUri)
.restOperations(rest)
.build();
decoder.setJwtValidator(
org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));အပလီကေးရှင်း၏ အစစ်အမှန် jwkSetUri နှင့် issuer ကို အသုံးပြုပြီး ဤဒီကုဒ်ဒါကို အစစ်အမှန် အရင်းအမြစ်-ဆာဗာ ဖွဲ့စည်းမှုတွင် ထည့်သွင်းပါ။ ဥပမာသည် servlet ပုံစံ Nimbus ဒီကုဒ်ဒါနှင့်အတူ အတည်ပြုခြင်းမရှိသော HTTP ပရောက်ဆီကို အသုံးပြုသည်။ ခွင့်ပြုထားသော အများသူငှာ ပရောက်ဆီလမ်းကြောင်းရှိ အများသူငှာ JWK URL အတွက် HTTP ပရောက်ဆီ စာရင်းက ဖြစ်နိုင်သော host နှင့် port တန်ဖိုးများကို ပေးသည်။
ဥပမာရှိ issuer အတည်ပြုစစ်ဆေးသူသည် လိုအပ်သော audience သို့မဟုတ် အခြား အပလီကေးရှင်း စစ်ဆေးမှုများကို အစားထိုးခြင်း မဟုတ်ပါ။ အလိုအလျောက် ဖွဲ့စည်းထားသော ဒီကုဒ်ဒါကို အစားထိုးစဉ် ၎င်းတို့ကို ထိန်းသိမ်းပါ။ သော့ ဒေါင်းလုဒ်လမ်းကြောင်း ပြောင်းလဲခြင်းသည် အပလီကေးရှင်း မည်သည့် တိုကင်များကို လက်ခံသင့်သည်ကို မသတ်မှတ်ပါ။
reactive ဒီကုဒ်ဒါသည် အခြား အင်တာဖေ့စ်ကို အသုံးပြုသည်။ issuer ရှာဖွေခြင်း သို့မဟုတ် တိုကင် ရယူခြင်း ဖောက်သည်များသည်လည်း ၎င်းတို့၏ သယ်ယူပို့ဆောင်ရေး ဖွဲ့စည်းမှုကို ထိန်းသိမ်းထားသည်။
ကက်ရှ်ထားသော သော့များသည် ဒေါင်းလုဒ်အသစ်မလိုဘဲ အတည်ပြုစစ်ဆေးမှု အောင်မြင်စေနိုင်သည်။ လမ်းကြောင်းကို အကဲဖြတ်စဉ် မအောင်မြင်သော သော့ URL နှင့် ပြန်လည်ဆန်းသစ်ခြင်း သို့မဟုတ် စတင်ခြင်း အဆင့်ကို ထိန်းသိမ်းပါ။