လွယ်လွယ်ပြောရရင် JWT ဆိုတာ Login ဝင်ပြီးကြောင်း သက်သေခံတဲ့ Digital လက်မှတ်လိုပါပဲ။ Website တစ်ခုမှာ Login ဝင်လိုက်တာနဲ့ Server က “ဒီလူက တကယ် အကောင့်ပိုင်ရှင်ပါ” ဆိုတဲ့ လက်မှတ်ထုတ်ပေးလိုက်တယ်။ နောက်ပိုင်း Page တစ်ခုခု ဖွင့်တိုင်း အဲဒီလက်မှတ်ကို ပြလိုက်ရုံပဲ။

JWT ကို အပိုင်း ၃ ပိုင်း ခွဲထားတယ် — Header, Payload, Signature။ ဥပမာ ပြောရရင် အမှတ်တံဆိပ်ပါတဲ့ စာရွက်တစ်ရွက်လိုပါ။ Header က “ဒါက JWT ပါ” လို့ ပြောတယ်။ Payload က User ရဲ့ နာမည်၊ ID လို အချက်အလက်တွေ ပါဝင်တယ်။ Signature ကတော့ အတုအယောင် မဖြစ်အောင် Server က လျှို့ဝှက်ချက် (Secret) နဲ့ ချိတ်ပိတ်ထားတဲ့ တံဆိပ်ပေါ့။

ဘယ်လို အလုပ်လုပ်လဲဆိုရင် အဆင့် ၃ ဆင့်ပါ —

– Login ဝင်တယ် → Username နဲ့ Password မှန်ရင် Server က JWT ထုတ်ပေးတယ်
– Request တိုင်း လက်မှတ်ပါတယ် → Browser က နောက်ပိုင်း Request တိုင်းမှာ JWT ကို Header ထဲ ထည့်ပို့တယ်
– Server က စစ်တယ် → Signature မှန်ရင် “ဒီလူက Login ဝင်ထားပြီးသား” လို့ ယုံကြည်ပြီး ခွင့်ပြုလိုက်တယ်

JWT ရဲ့ အကောင်းဆုံးအချက်က Server က Session မှတ်ထားစရာ မလိုတာပါ။ လက်မှတ်ကိုယ်တိုင်က အချက်အလက်အကုန် ပါပြီးသားမို့ Server များများထားလည်း ဘယ် Server က လက်ခံလက်ခံ အတူတူပဲ။ ဒါကြောင့် Modern API တွေမှာ တော်တော်လေး သုံးကြတယ်။

ဒါပေမယ့် သတိထားစရာလည်း ရှိတယ်။ JWT ကို ခိုးသွားရင် ခိုးတဲ့လူက ကိုယ့်အကောင့်အဖြစ် သုံးလို့ရတယ်။ ဒါကြောင့် HTTPS နဲ့ပဲ ပို့ရမယ်၊ လက်မှတ်သက်တမ်း (Expiry) တိုတိုထားရတယ်။ Expiry ကုန်ခါနီးရင် Refresh Token နဲ့ အသစ်လဲရတယ်။

Developer တွေ အနေနဲ့ မှတ်ထားရမှာက JWT က လုံခြုံရေးစနစ်တစ်ခုလုံးတော့ မဟုတ်ဘူး။ လက်မှတ်စစ်တဲ့ ယန္တရားတစ်ခုပဲ။ Password ခိုင်မာအောင်ထားတာ၊ HTTPS သုံးတာတွေနဲ့ တွဲသုံးမှ တကယ် လုံခြုံတယ်။ 🙂

– Min SiThu (www.minsithu.org)