​JSON WEB TOKEN(JWT) အကြောင်း သိကောင်းစရာများ

JSON Web Token (JWT) သည် token based authentication ကိုအသုံးပြုသည့် နည်းပညာ တစ်ခုဖြစ်သည်။ JSON Web Token သည် JSON object ကို JSON Web Signature (JWS) သို့မဟုတ် JSON Web Encryption (JWE) ပုံစံဖြင့် encode လုပ်ထားခြင်းဖြစ်သည်။ တနည်းအားဖြင့်ဆိုသော် JSON Web Signature နည်းလမ်းကိုသုံး၍သော်လည်းကောင်း JSON Web Encryption နည်းလမ်းကို သုံး၍သော်လည်းကောင်း နှစ်ခုစလုံးဖြင့်လည်း မိမိလိုအပ်ချက်ပေါ်မူတည်ပြီး အသုံးပြုလေ့ ရှိကြပါသည်။

JWT တွင် Header, Payload, Signature ဆို၍ အပိုင်းသုံးပိုင်းပါဝင်ပြီး (.) ဖြင့် ပိုင်းခြားထားသည်။ ဥပမာအားဖြင့် အောက်ပါပုံစံအတိုင်း ဖြစ်ပါသည်။
“xxxxx.yyyyy.zzzzz”

Header

Token ရဲ့ပထမအပိုင်းဖြစ်တဲ့ Header တွင်အပိုင်းနှစ်ပိုင်းပါဝင်ပြီး token ပုံစံအမျိုးအစားနှင့် HMAC သို့မဟုတ် RSA ကဲ့သို့သော hashing algorithm များပါဝင်သည်။ ထို့နောက် JSON သည် JWT ၏ ပထမပိုင်းကို ဖွဲ့စည်းရန် Base64Url encoded လုပ်ရပါသည်။ ဥပမာအားဖြင့် အောက်ပါ ပုံစံအတိုင်း ဖြစ်ပါသည်။

JSON WEB TOKEN header photo

Payload

Token ရဲ့ဒုတိယအပိုင်းဖြစ်တဲ့ Payload တွင် claims များ ပါဝင်ပါသည်။Claims ဆိုသည်မှာ entity ကဲ့သို့သော object များနှင့် metadata များရှိသည်။Claims တွင် အမျိုးအစား (၃) မျိုး ပါရှိပါသည်။

  1. Registered claims
  2. Public claims
  3. Private claims

ဥပမာအားဖြင့် အောက်ပါ ပုံစံအတိုင်း ဖြစ်ပါသည်။

JSON WEB TOKEN payload photo

Signature

နောက်ဆုံးအပိုင်းဖြစ်သည့် Signature တွင် Token ရဲ့ ပထမအပိုင်းဖြစ်တဲ့ Header နှင့် Token ရဲ့ ဒုတိယအပိုင်းဖြစ်တဲ့ Payload အပိုင်းများကို encode လုပ်ပြီး secret နှင့် အတူ Header တွင် ပါဝင်သည့် algorithm ကို အသုံးပြုပြီး sign လုပ်လိုက်ခြင်း ဖြစ်သည်။ Signature သည် JWT ကိုအသုံးပြုပြီး ပို့လိုက်သူသည် တကယ့်ပို့သူဖြစ်ကြောင်းနှင့် ပို့လိုက်သည့်လမ်းကြောင်းတွင် message သည် ပြောင်းလဲခြင်း မခံရကြောင်း အတည်ပြုပေးသည်။

JWT ကို များသောအားဖြင့် Authorization နှင့် Authentication များတွင် သုံးလေ့ရှိပါသည်။ Authentication တွင် user သည် သူ၏ credentials ဖြင့် login ဝင်ပြီးနောက် JSON Web Token အား လက်ခံရရှိလိုက်သည်။ ရရှိလာသော token သည် credentials ဖြစ်ပြီး security issue များအတွက် သတိထားဖို့ လိုအပ်ပါသည်။

User သည် တစ်ခါ login ဝင်ပြီးသည်နှင့် နောက်ထပ်ပို့လွှတ်သည့် request များတွင် token ပါ တစ်ခါထဲ တွဲလျှက်ပါလာပြီး ဖြစ်ပါသည်။ User သည် တားမြစ်ထားသော route များ ၊ resource များသို့ ဝင်ရောက်လို့သည့် အခါတိုင်း user agent က token ကို ပို့ပေးပြီး server မှ တားမြစ်ထားသော route များက valid ဖြစ်သော token အား စစ်ဆေးပြီး authorized ဖြစ်သော user ဟုတ်ပါက resource များအား ဝင်ရောက် ခွင့်ပြုပေးသည်။

Payload နှင့် Header များကို encode လုပ်၍ Signature ကို အသုံးပြုထားသောကြောင့် JWT ကို Information Exchange အတွက်လဲ သုံးလေ့ ရှိကြပါသည်။ JWT သည် အခြားသော web token များဖြင့် နှိုင်းယှဉ်ကြည့်လျှင် size ပိုသေးပြီး URL မှတဆင့် POST parameter ဖြင့် လည်းကောင်း၊ HTTP header အတွင်း၌ လည်းကောင်း လျှင်မြန်စွာ ပေးပို့နိုင်ပါသည်။JWT သည် public/private key ကို X.509 certificate ပုံစံဖြင့် signing လုပ်ပြီး သုံးသောကြောင့် security အတွက်လည်း သင့်တင့်သလောက် စိတ်ချရသည်။ JWT သည် user ၏ device များတွင်လဲ process လုပ်ရတာ လွယ်ကူသည်။ အထူးသဖြင့် mobileများတွင် ပို၍ လွယ်ကူစွာ process လုပ်နိုင်သည်။Thetys Co.,Ltd  website နှင့် Thetys Facebook တွင် အခြားသော IT နဲ့ပတ်သတ်သော Knowledge များကိုလဲ လေ့လာဖတ်ရှုနိုင်ပါသည်။