JSON Web Token (JWT) කියන්නේ මොකක්ද?
Published 2 days ago by Sinlix
අද කාලේ Web Applications සහ REST APIs හදනකොට Authentication කියන්නේ අනිවාර්යම දෙයක්. පරණ Session-based Authentication වලට වඩා, අද වැඩිපුරම භාවිතා වෙන්නේ JSON Web Token, කෙටියෙන් JWT.
අපි මෙි ලිපියෙන් JWT කියන්නේ මොකක්ද, ඒක වැඩ කරන්නේ කොහොමද, වාසි, අවාසි සහ ආරක්ෂිතව භාවිතා කරන්න තියෙන හොඳම ක්රම ගැන පැහැදිලිව කතා කරමු.
JWT කියන්නේ මොකක්ද?
JWT (JSON Web Token) කියන්නේ Client සහ Server එකක් අතර User කවුද කියලා තහවුරු කරගන්න භාවිතා කරන ආරක්ෂිත Token එකක්.
Session-based Authentication වලදී Server එක session data store කරගෙන ඉන්නවා. නමුත් JWT භාවිතා කරනකොට එහෙම Session Store කිරීමක් අවශ්ය වෙන්නේ නැහැ.
User ගැන අවශ්ය තොරතුරු Token එක ඇතුළෙම තියෙන නිසා, Server එකට හැම Request එකකටම Database එක Check කරන්න අවශ්ය වෙන්නේ නැහැ. ඒ නිසා System එක වේගවත් වෙනවා සහ Manage කරන්න ලේසි වෙනවා.
JWT Structure
JWT එකක් ප්රධාන කොටස් තුනකින් සමන්විතයි. මේ කොටස් dot (.) එකකින් වෙන් වෙනවා.
1. Header
Header එක තුල Token එකේ type එක සහ sign කිරීම සඳහා භාවිතා කරපු Algorithm එක සඳහන් වෙනවා. උදාහරණයක් විදිහට HS256 වගේ algorithm එකක්.
2. Payload
Payload එක ඇතුළේ user ID, Username වගේ Data තියෙනවා. මේ Data වලට Claims කියලා කියනවා.
3. Signature
JWT එකේ වැදගත්ම කොටස Signature එක. Token එක අතරමඟදී වෙනස් කරලා තියෙනවද, ඒක ඇත්තටම Server එකෙන් Generate කරපු එකක්ද කියලා Verify කරන්නේ මෙතනින්.
JWT වැඩ කරන විදිහ
- User Login වෙනකොට Username සහ Password Server එකට යවනවා.
- Details හරි නම් Server එක JWT එකක් Generate කරලා User ට යවනවා
- User පස්සේ කරන හැම API request එකකටම ඒ JWT එක Request Header එකට Add කරලා යවනවා.
- Server එක Token එක Verify කරලා, Signature එක හරි නම් විතරක් Access ලබාදෙනවා.
JWT භාවිතා කිරීමේ වාසි
Stateless Authentication - Server එකේ Session Store කරන්න ඕන නැති නිසා Server Resources Save වෙනවා.
Scalability - Microservices වගේ servers කිහිපයක් තියෙන systems වලට JWT ඉතා සුදුසුයි.
Speed - Database Session Check කිරීමක් නැති නිසා Response Time එක ඉක්මනින් ලැබෙනවා.
JWT භාවිතා කිරීමේ අවාසි
Token Revoke කිරීම අමාරුයි - Token එකක් Expire වෙන්න කලින් Invalidate කරන්න ලේසි නැහැ.
Token Size එක වැඩියි - සාමාන්ය Session ID එකකට වඩා JWT එකේ Data වැඩි නිසා Size එක ටිකක් ලොකුයි.
Security Risks - Token එක unsafe විදිහට Store කරලා තිබ්බොත් ඒක හොරකම් වෙන්න පුළුවන්.
JWT භාවිතා කරනකොට අනිවාර්ය ආරක්ෂක ක්රම
1. Secret Key ආරක්ෂා කරන්න
Secret Key එක Client-side එකේ කිසිම විදිහකට තියාගන්න එපා. Server එකේ .env file එකක Secure විදිහට තියාගන්න.
2. HTTPS භාවිතා කරන්න
JWT Network එක මැදදී Intercept වෙන්න බැරිවෙන්න SSL, HTTPS අනිවාර්යයෙන් භාවිතා කරන්න.
3. Token expiration set කරන්න
Token එක කෙටි කාලයකින් Expire වෙන විදිහට හදන්න. දිගු Session සඳහා Refresh Tokens භාවිතා කරන්න.
4. Sensitive Data Payload එකට දාන්න එපා
Passwords, Credit Card Numbers වගේ Sensitive Information කිසිම වෙලාවක Payload එකට Add කරන්න එපා.
අවසාන වශයෙන් JWT ගැන කියන්නේ, Modern Web Development වල, විශේෂයෙම REST API භාවිතා වන Systems වල අත්යවශ්ය ඣoncept එකක්. හරියට Design කරලා, ආරක්ෂිතව Implement කළොත් ඔයා හදන System එකේ Performance එකත් Security එකත් දෙකම වැඩි කරගන්න පුළුවන්.
මෙම ලිපිය ඔබට ප්රයෝජනවත් නම්, ඔබේ developer යාළුවන්ටත් share කරන්න.
Happy coding...!!!!

