1
1040

Token Base Authentication

Myo Thant Kyaw


ဒီစာကိုဖတ်ပီး 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 👊

Comment:
Please Login To Create Comment Login
Loading...
Nay Myo 7 months ago ကျေးဇူး ဆရာ