𝗝𝗪𝗧 𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗶𝗻 𝗙𝗮𝘀𝘁𝗔𝗣𝗜
Authentication என்பது "நீங்கள் யார்?" என்று கேட்கிறது. Authorization என்பது "உங்களால் என்ன செய்ய முடியும்?" என்று கேட்கிறது.
நீங்கள் பாதுகாப்பு இல்லாமல் ஒரு AI தளத்தை உருவாக்கினால், யார் வேண்டுமானாலும் தனிப்பட்ட தரவுகளை அணுக முடியும். அவர்களால் பயனர் விவரங்களை (user profiles) மாற்றவோ அல்லது மாணவர்களின் முன்னேற்றத்தைப் பார்க்கவோ முடியும். உங்கள் வளங்களை (resources) நீங்கள் கண்டிப்பாகப் பாதுகாக்க வேண்டும்.
JWT (JSON Web Token) இதற்குத் தீர்வாக அமைகிறது. ஒவ்வொரு கோரிக்கைக்கும் (request) கடவுச்சொல்லை (password) அனுப்புவதற்குப் பதிலாக, பயனர் ஒரு பாதுகாப்பான டோக்கனை (token) அனுப்புகிறார்.
பணிப்பாய்வு (Workflow):
- பயனரைப் பதிவு செய்தல் (Register user)
- கடவுச்சொல்லை ஹாஷ் (Hash) செய்தல்
- லாகின் செய்து விவரங்களைச் சரிபார்த்தல் (Login and verify credentials)
- JWT டோக்கனை உருவாக்குதல்
- பாதுகாக்கப்பட்ட பாதைகளை (protected routes) அணுகுதல்
நீங்கள் இந்த கருவிகளைப் பயன்படுத்த வேண்டும்:
- கடவுச்சொல் ஹாஷிங்கிற்கு passlib மற்றும் bcrypt
- டோக்கன் உருவாக்க python-jose
கடவுச்சொற்களை ஒருபோதும் சாதாரண உரையாக (plain text) சேமிக்காதீர்கள். ஒரு ஹேக்கர் உங்கள் தரவுத்தளத்தைத் (database) திருடிவிட்டால், அவர்களுக்கு அனைத்தும் கிடைத்துவிடும். அதற்குப் பதிலாக, ஒரு ஹாஷை (hash) சேமிக்கவும்.
ஒரு ஹாஷ் "password123" என்பதை நீண்ட சீரற்ற எழுத்துக்களாக (random characters) மாற்றுகிறது. அந்த ஹாஷை மீண்டும் கடவுச்சொல்லாக மாற்ற முடியாது. உள்ளீடு (input) அந்த ஹாஷுடன் பொருந்துகிறதா என்பதை மட்டுமே நீங்கள் சரிபார்க்க முடியும்.
இதை எவ்வாறு உருவாக்குவது:
பதிவு செய்தல் (Registration) பயனர் ஒரு பயனர் பெயர் (username) மற்றும் கடவுச்சொல்லை அனுப்புகிறார். நீங்கள் கடவுச்சொல்லை ஹாஷ் செய்து உங்கள் தரவுத்தளத்தில் சேமிக்க வேண்டும்.
லாகின் (Login) பயனர் தனது விவரங்களை அனுப்புகிறார். நீங்கள் சேமிக்கப்பட்ட ஹாஷைக் கண்டறிய வேண்டும். கடவுச்சொல்லைச் சரிபார்க்க நீங்கள் லைப்ரரியைப் (library) பயன்படுத்த வேண்டும். அது சரியாக இருந்தால், நீங்கள் ஒரு டோக்கனை உருவாக்குகிறீர்கள்.
JWT உருவாக்கம் (JWT Generation) ஒரு டோக்கனில் பயனர் தரவு மற்றும் காலாவதி நேரம் (expiry time) இருக்கும். நீங்கள் ஒரு ரகசிய சாவியைப் (secret key) பயன்படுத்தி டோக்கனில் கையொப்பமிடுகிறீர்கள் (sign). ஒரு பயனர் தரவை மாற்ற முயன்றால், அந்த கையொப்பம் தோல்வியடையும்.
லாகின் பதில் (login response) இவ்வாறு இருக்கும்: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
இப்போது பயனர் உங்கள் அமைப்பிற்கான (system) ஒரு சாவியைக் கொண்டுள்ளார்.
அடுத்த பகுதியில், குறிப்பிட்ட பாதைகளைப் (routes) பாதுகாக்கவும் மற்றும் பயனர் பாத்திரங்களை (user roles) நிர்வகிக்கவும் இந்த டோக்கன்களை எவ்வாறு பயன்படுத்துவது என்பதைப் பற்றிப் படிப்போம்.
படிகளின் சுருக்கம்:
- பயனரைப் பதிவு செய்தல்
- கடவுச்சொல்லை ஹாஷ் செய்து சேமித்தல்
- லாகின் செய்யும் போது கடவுச்சொல்லைச் சரிபார்த்தல்
- கையொப்பமிடப்பட்ட JWT-ஐ உருவாக்குதல்
Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Optional learning community: https://t.me/GyaanSetuAi