FastAPI मध्ये JWT Authentication
Authentication विचारते "तुम्ही कोण आहात?" Authorization विचारते "तुम्ही काय करू शकता?"
जर तुम्ही सुरक्षेविना AI प्लॅटफॉर्म तयार केला, तर कोणीही खाजगी डेटा एक्सेस करू शकतो. ते वापरकर्त्यांची प्रोफाइल्स बदलू शकतात किंवा विद्यार्थ्यांची प्रगती पाहू शकतात. तुम्हाला तुमच्या संसाधनांचे (resources) संरक्षण करणे आवश्यक आहे.
JWT (JSON Web Token) हे याचे समाधान करते. प्रत्येक विनंतीसोबत (request) पासवर्ड पाठवण्याऐवजी, वापरकर्ता एक सुरक्षित टोकन पाठवतो.
कार्यप्रवाह (Workflow):
- वापरकर्त्याची नोंदणी करा (Register user)
- पासवर्ड हॅश करा (Hash password)
- लॉगिन करा आणि क्रेडेंशियल्स सत्यापित करा (Login and verify credentials)
- JWT टोकन तयार करा (Generate JWT token)
- संरक्षित रूट्स एक्सेस करा (Access protected routes)
तुम्ही ही साधने वापरली पाहिजेत:
- पासवर्ड हॅशिंगसाठी bcrypt सह passlib
- टोकन जनरेशनसाठी python-jose
पासवर्ड कधीही प्लेन टेक्स्टमध्ये (plain text) साठवू नका. जर एखाद्या हॅकरने तुमचा डेटाबेस चोरला, तर त्यांना सर्व काही मिळेल. त्याऐवजी, हॅश (hash) साठवा.
हॅश "password123" ला यादृच्छिक (random) वर्णांच्या लांब स्ट्रिंगमध्ये रूपांतरित करतो. तुम्ही हॅशचे पुन्हा पासवर्डमध्ये रूपांतर करू शकत नाही. तुम्ही फक्त इनपुट हॅशशी जुळते की नाही हे सत्यापित करता.
ते कसे तयार करायचे:
नोंदणी (Registration) वापरकर्ता युजरनेम आणि पासवर्ड पाठवतो. तुम्ही पासवर्ड हॅश करता आणि तो तुमच्या डेटाबेसमध्ये साठवता.
लॉगिन (Login) वापरकर्ता क्रेडेंशियल्स पाठवतो. तुम्ही साठवलेला हॅश शोधता. पासवर्ड सत्यापित करण्यासाठी तुम्ही लायब्ररी वापरता. जर तो जुळला, तर तुम्ही टोकन तयार करता.
JWT जनरेशन (JWT Generation) टोकनमध्ये वापरकर्त्याचा डेटा आणि एक्सपायरी वेळ (expiry time) असते. तुम्ही सिक्रेट की (secret key) वापरून टोकनवर स्वाक्षरी (sign) करता. जर वापरकर्त्याने डेटा बदलण्याचा प्रयत्न केला, तर सिग्नेचर फेल होते.
लॉगिन रिस्पॉन्स असा दिसतो:
{
"access_token": "eyJhbGciOiJIUzI1Ni...",
"token_type": "bearer"
}
आता वापरकर्त्याकडे तुमच्या सिस्टमची चावी आहे.
पुढच्या भागात, आपण विशिष्ट रूट्स संरक्षित करण्यासाठी आणि वापरकर्त्यांच्या भूमिका (user roles) व्यवस्थापित करण्यासाठी ही टोकन्स कशी वापरायची ते शिकणार आहोत.
स्टेप्सचा सारांश:
- वापरकर्त्याची नोंदणी करा
- पासवर्ड हॅश करा आणि साठवा
- लॉगिन दरम्यान पासवर्ड सत्यापित करा
- साइन केलेले JWT तयार करा
स्रोत: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
पर्यायी लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi