ဒီစာကိုဖတ်ပီး access token ဆိုတာဘာလည်း
ဘယ်လိုsecure ဖြစ်အောင် လုပ်ထားနိုင်လည်း
refresh token ဆိုတာဘာလည်း
refresh token rotation ဆိုတာဘာလည်း
စသဖြင့်များစွာ ဗဟုသုတရသွားမှာဖြစ်ပါတယ်။
အားလုံးမင်္ဂလာပါ
ဒီနေ့ကျွန်တော်တို့ token base authentication ကို
ဆွေးနွေးကြပါမယ်
codeတွေရော logic တွေရောအကုန်ပြောဖို့ဆိုရင်
စာအုပ်တစ်အုပ်လောက်ထုတ်မှရမှာမလို့ logic ကိုပဲ
ဦးစားပေးဆွေးနွေးသွားပါမယ်
code အတွက်ကတော့ jwt authentication mini course
မှာသင်ကြားမှာဖြစ်ပါတယ်
web(single page application) or mobile app တစ်ခုရှိတယ်ဆိုပါစို့
app မှာအကောင့်ဖွင့်ပီး login ဝင်တဲ့အခါမှာ
token တစ်ခုကို auth state အတွက် သက်ဆိုင်ရာ storage (localstorage,cookie,securestore(react native)) တစ်ခုခုမှာ
သိမ်းထားရပါမယ်
ဒီ access token ကိုလည်း ကိုယ့် application မှာ အချိန်ဘယ်လောက်ထိ login လုပ်ထားစေချင်တယ်ဆိုတာပေါ်မူတည်ပီး(eg 5month expire)
expire သတ်မှတ်ထားရပါမယ်
ဒါဆိုရင် code ကနေ access token ရှိနေတယ် access token expire မဖြစ်သေးဘူး
ဆိုတာကို စစ်ဆေးပီး login state မှာရောက်နေစေမှာဖြစ်ပါတယ်။
ဒီမှာပြသနာတွေရှိလာပါပီ
token တွေက browser localstorage မှာသာသိမ်းထားတယ်
mobile app တွေမှာလည်း hijack လုပ်ပီး ဒီ access token ကို attacker က ရယူသွားနိုင်တယ်ဆိုရင်
user info တွေ ရယူသွားနိုင်မှာဖြစ်လို့ app က secure မဖြစ်တော့ပါဘူး
ဒီမှာ token ကို short time expire(15min) လုပ်ထားခြင်းက အပေါ်ကနည်းလမ်းထက် ပိုပီး
secure ဖြစ်စေမှာပါ
token ကို short time expire(15min) လုပ်ထားဖြင်းကလည်း ux မှာပြသနာဖြစ်နေပြန်ပါတယ်
user တွေက app ကနေ 15မိနစ်တိုင်း login ပြန်ဝင်နေရမှာပါ။
အများအားဖြင့် banking app တွေမှာ တွေ့ရတတ်ပါတယ်။
ဒီပြသနာကိုဖြေရှင်းဖို့အတွက် refresh token ဆိုတဲ့ logic တစ်ခုထပ်ထွက်လာပါတယ်။
refresh token ကဘာလည်းဆိုတာကိုအရင်ပြောကြပါမယ်။
refresh token က accesstoken(auth token) ကိုယူဖို့အတွက်အသုံးပြုရမဲ့ token ဖြစ်ပါတယ်။
refresh token က user အချက်အလက်တွေကြည့်မဲ့ api မျိုးတွေမှာ access token
အဖြစ်အသုံးချနိင်မှာမဟုတ်ပါဘူး
refresh token က 15min expire ရှိတဲ့ access token တစ်ခုကိုရယူဖို့အတွက်သာအသုံး
ပြုရမှာဖြစ်ပါတယ်။
user က loginတစ်ခေါက်လုပ်တာနဲ့ token နှစ်ခု server ကနေ response လုပ်ရပါမယ်
access token (user accountအတွက်ဖြစ်ပီး ၁၅မိနစ် မှာသက်တန်းကုန်မှာဖြစ်ပါတယ်။)
refresh token (access token ပြန်ယူဖို့အတွက်ပါ user account နဲ့ဆိုင်တာတွေ access လုပ်ခွင့်မရှိတာကြောင့် long live ထားနိုင်ပါတယ်။)
access token expire မဖြစ်ခင်က်ိုစစ်ဆေးပီး app ရဲ့ background ကနေ
refresh token သုံးပီး access token ကို ပြန်ယူနေရမှာဖြစ်ပါတယ်။
ဒီမှာ နောက်တစ်ခုက refresh token တွေကို attacker ကရယူသွားနိုင်ပြန်ပါတယ်
complete secure ဖြစ်ဖို့တော့မလွယ်ဘူးလို့ထင်ပါတယ်။ခက်ခဲနေအောင်တော့လုပ်လို့ရပါတယ်။
ဒီမှာထက်ထွက်လာတာက refresh token ကို rotate လုပ်နေရမှာပါ
ဆိုလိုတာက refresh token တစ်ခုကို တစ်ကြိမ်ပဲ အသုံးပြုနိုင်အောင်လုပ်ထားရမှာပါ
ဒီအတွက် refresh token တွေကို database မှာသိမ်းပီး အသုံးပြုပီးတိုင်းဖြတ်လိုက်ရမယ်
ဒါမှမဟုတ် သုံးမရအောင် expire လုပ်ရမှာဖြစ်ပီး
refresh token အသစ်တစ်ခုကို client ကိုပြန်ပို့ပေးနေရပါမယ်။
refresh token က database မှာမရှိတဲ့ token ကိုအသုံးပြုနေတယ်ဆိုရင်
သေချာပီ attack လုပ်ဖို့ကြိုးစားနေတာဖြစ်ပါတယ်
ဒါဆိုရင် user account ကို block ထားတာမျိုး login ပြန်လုပ်ခိုင်းတာမျိုး
access token တွေကို expire လုပ်လိုက်တာမျိုး
ကိုယ့်အတွက် အဆင်ပြေသလို လုပ်လိုက်ရမှာဖြစ်ပါတယ်။
token တွေဖန်တီးတဲ့အခါမှာ secret key သတ်မှတ်တာတွေ
web client မှာ httpOnly cookie ဖန်တီးတောတွေတော့ချန်ထားခဲ့ပါမယ်
ဒါတွေက video course မှာ code နဲ့ရှင်းတာကပိုနားလည်လွယ်စေမှာမလို့ပါ
see you next article guyz 👊