|
වෙබ් Apps වල මුරකරු: JWT ගැන A සිට Z! 💂‍♂️🛡️

වෙබ් Apps වල මුරකරු: JWT ගැන A සිට Z! 💂‍♂️🛡️

technology web development
By Rasanjana 2025-04-27 19:26:33

Web Applications කියන නගරයේ, දොරටු පාලකයා වගේ ඉන්න කෙනෙක් තමයි JWT (JSON Web Tokens) කියන්නේ! 😊 මෙයාගේ ප්‍රධාන රාජකාරිය තමයි, නගරය ඇතුළට (ඒ කියන්නේ ඔයාගේ application එකට) එන අය කවුද, එයාලට කොහෙට යන්න අවසර තියෙනවද කියලා හරියටම බලාගන්න එක සහ ආරක්ෂිතව තොරතුරු හුවමාරු කරගන්න උදව් කරන එක. හරියට digital අවසර පත්‍රයක් (pass) වගේ! 🛂 මේ අවසර පත්‍රය ලියවිලා තියෙන්නේ JSON (JavaScript Object Notation) කියන format එකෙන්.


ඇයි මේ මුරකරු (JWT) අපිට ඕන? 🤷‍♂️

මේ JWT මුරකරුගේ සේවය අපිට ගොඩක් වෙලාවට ඕන වෙන්නේ මේ වැඩ වලට:

  • Authentication (කවුද කියලා අඳුරගන්න එක - සත්‍යාපනය): කෙනෙක් හරි විදියට නගරයට ඇතුල් වෙන්න අවසර ඉල්ලුවම (login වුණාම), මුරකරු (server) එයාට විශේෂ අවසර පත්‍රයක් (JWT) දෙනවා. ඊට පස්සේ ඒ කෙනා නගරය ඇතුළේ කොහේ ගියත් (request යැව්වත්) මේ අවසර පත්‍රය පෙන්නනවා. මුරකරු ඒක බලලා "ආහ්, මේ හරි කෙනෙක්, ඇතුලට යන්න දෙන්න" කියලා ඉඩ දෙනවා. 🔑✅
  • Authorization (මොනවටද අවසර තියෙන්නේ කියලා බලන එක): අවසර පත්‍රයේම ලියලා තියෙන්න පුළුවන් මේ කෙනාට නගරයේ කොයි කොයි තැන් වලට යන්න අවසරද කියලා (user roles/permissions). මුරකරු ඒකත් බලනවා. 📜🚶‍♂️
  • Information Exchange (ආරක්ෂිතව තොරතුරු හුවමාරුව): සමහර වෙලාවට මේ අවසර පත්‍රය (JWT) ඇතුළෙම වැදගත්, තහවුරු කරපු තොරතුරු ලියලා යවන්නත් පුළුවන්, වෙන කෙනෙක්ට හොරෙන් කියවන්න බැරි වෙන්න (signature එක නිසා tamper-proof). 📨🔒


මුරකරුගේ අවසර පත්‍රයේ (JWT) කොටස් තුනයි! 🧱

මේ JWT අවසර පත්‍රය හැදිලා තියෙන්නේ '.' (තිතෙන්) වෙන් කරපු කොටස් තුනකින්:

  1. Header (ශීර්ෂකය) 📄: මේකේ ලියලා තියෙන්නේ අවසර පත්‍රයේ වර්ගය (ඒ කියන්නේ JWT) සහ මේක තහවුරු කරන්න පාවිච්චි කරපු රහස්‍ය කේත ක්‍රමය (signing algorithm - HMAC SHA256 වගේ) මොකක්ද කියන එක.
  2. Payload (දත්ත කොටස) 📦: මෙතන තමයි අවසර පත්‍රය හිමි කෙනා ගැන (user ID, නම වගේ) සහ අවසර පත්‍රය ගැනම විස්තර (කල් ඉකුත්වෙන වෙලාව වගේ - claims) ලියලා තියෙන්නේ. මේකේ ලියන දේවල් decode කරලා බලන්න පුළුවන්, ඒ නිසා රහස්‍ය දේවල් මෙතන දාන්න එපා!
  3. Signature (මුරකරුගේ අත්සන/මුද්‍රාව) ✍️🛡️: මේක තමයි වැදගත්ම සහ ආරක්ෂිතම කොටස! මේක හරියට මුරකරුගේ රහස්‍ය, කඩන්න බැරි මුද්‍රාව වගේ. මේකෙන් තමයි තහවුරු කරන්නේ මේ අවසර පත්‍රය අතරමගදී කවුරුත් වෙනස් කරලා නෑ, නිකුත් කලේ මුරකරුමයි කියලා. මේ මුද්‍රාව හදන්නේ:
  • Encoded Header එකයි
  • Encoded Payload එකයි
  • මුරකරු (Server) ලඟ විතරක් තියෙන රහස් යතුර (Secret Key) එකයි 🤫
  • Header එකේ කියපු algorithm එකයි එකතු කරලා.


මුරකරු (JWT) වැඩ කරන පිළිවෙල (A සිට Z) ⚙️

  1. User කෙනෙක් නගරයේ දොරටුවට ඇවිත් තමාව හඳුන්වා දෙනවා (username/password දීලා login වෙනවා). 👤➡️🚪
  2. මුරකරු (Server) ඒ තොරතුරු පරීක්ෂා කරලා, හරි නම්, අර විශේෂ අවසර පත්‍රය (JWT) හදලා user අතට දෙනවා. 💂‍♂️➡️🔐➡️👤
  3. User ඒ අවසර පත්‍රය පරිස්සමට තියාගන්නවා (Client එකේ - browser/app එකේ save කරගන්නවා). 💾📱
  4. User නගරය ඇතුළේ ආරක්ෂිත තැනකට යන්න අවසර ඉල්ලන හැම වෙලාවකම (protected resource එකකට request කරන හැම වෙලාවකම), අර අවසර පත්‍රය (JWT) පෙන්නනවා (Request එකේ Authorization header එකේ යවනවා). 📱➡️🛂➡️💂‍♂️
  5. මුරකරු (Server) ඒ අවසර පත්‍රය (JWT) අරගෙන, තමන්ගේ රහස් යතුර (Secret Key) පාවිච්චි කරලා, ඒකේ තියෙන මුද්‍රාව (Signature) හරිද, අවසර පත්‍රය කවුරුත් වෙනස් කරලා නැද්ද, තවම වලංගුද (expire වෙලා නැද්ද) කියලා හොඳටම පරීක්ෂා කරනවා. ✔️🧐
  6. මුද්‍රාව හරියටම හරි නම්, අවසර පත්‍රය වලංගු නම්, මුරකරු දන්නවා මේ එන්නේ හරි කෙනෙක් කියලා, ඒ නිසා ඉල්ලපු තැනට යන්න (resource එක access කරන්න) අවසර දෙනවා. ✅➡️🚶‍♂️➡️🏠
  7. මුද්‍රාව වැරදි නම්, අවසර පත්‍රය කල් ඉකුත් වෙලා නම්, හෝ වෙනත් ප්‍රශ්නයක් නම්, මුරකරු අවසර දෙන්නේ නෑ (request එක reject කරනවා). ❌🙅‍♂️


ඇයි මේ මුරකරු (JWT) හොඳ? (වාසි) 👍

  • Stateless (මතක තියාගන්න දේවල් අඩුයි): මුරකරුට හැම කෙනා ගැනම හැම වෙලේම මතක තියාගන්න ඕන නෑ. අවසර පත්‍රය පෙන්නුවම hari. මේ නිසා server එකට බර අඩුයි, ලොකු traffic එකක් වුණත් දරාගන්න ලේසියි (Scalable). ☁️🚀
  • Compact (අවසර පත්‍රය පොඩියි): JWT එක size එකෙන් පොඩි නිසා network එකේ එහා මෙහා යවන්න ලේසියි. 🤏
  • Self-contained (විස්තර ඔක්කොම එක තැන): අවසර පත්‍රයේම (payload) අවශ්‍ය විස්තර ගොඩක් තියෙන නිසා, හැම වෙලේම database එකෙන් අහන්න ඕන නෑ. 📉
  • Widely Used (හැමෝම පිළිගන්නවා): මේ ක්‍රමය ගොඩක් platforms, languages වල පාවිච්චි වෙන නිසා එකිනෙකට වෙනස් systems එක්ක වැඩ කරන්න ලේසියි. 🌐🤝


මුරකරු ගැන සැලකිලිමත් වෙන්න ඕන දේවල්! ⚠️

  • Payload එක කියවන්න පුළුවන්: අවසර පත්‍රයේ (payload) ලියලා තියෙන දේවල් encrypt වෙලා නෑ, encode විතරයි වෙලා තියෙන්නේ. ඒ කියන්නේ decode කලොත් ඕන කෙනෙක්ට කියවන්න පුළුවන්. ඒ නිසා password වගේ හරිම sensitive දේවල් ඒකේ දාන්න එපා! 👀🔓
  • කල් ඉකුත් වෙන්න කලින් අවලංගු කරන්න අමාරුයි: අවසර පත්‍රයක් දුන්නම, ඒකේ තියෙන expire වෙන වෙලාව වෙනකම් ඒක සාමාන්‍යයෙන් වලංගුයි. කෙනෙක් logout වුණත්, ඒ පත්‍රය කල් ඉකුත්වෙනකම් (කවුරුහරි හොරකම් කලොත්) වැඩ කරන්න පුළුවන්. මේකට short expiry times, token blacklist වගේ දේවල් පාවිච්චි කරන්න වෙනවා. ⏳🚫
  • රහස් යතුර (Secret Key) පණ වගේ ආරක්ෂා කරන්න ඕන!: මුරකරුගේ අත්සන/මුද්‍රාව (Signature) හදන්න පාවිච්චි කරන රහස් යතුර කාටවත්ම හොයාගන්න බැරි වෙන්න ආරක්ෂා කරගන්න එක අතිශයින්ම වැදගත්! මේක නැතිවුණොත් හොරුන්ට බොරු අවසර පත්‍ර හදාගන්න පුළුවන්! 🤫🔒🔥


ඔන්න ඕකයි මචං, වෙබ් ඇප්ලිකේෂන් වල අපේ ආරක්ෂක මුරකරු, JWT ගැන A සිට Z කතාව! 😊 JWT කියන්නේ නූතන වෙබ් ආරක්ෂණයේ අත්‍යවශ්‍යම මෙවලමක්. හැබැයි මතක තියාගන්න, කොයිතරම් දක්ෂ මුරකරු වුණත්, එයාව හරියට පාවිච්චි කළේ නැත්නම්, එයාගේ රහස් යතුර පරිස්සම් කළේ නැත්නම්, ආරක්ෂාව බිඳ වැටෙන්න පුළුවන්.

තව මොනවාහරි දැනගන්න ඕන නම් අහන්න! 👍💂‍♂️


Rasanjana

Rasanjana

Member since 2025-04-09 13:55:06

Comments

Please login to post a comment.

No comments yet. Be the first to comment!