FastAPI میں 𝗝𝗪𝗧 𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗼𝗻
Authentication پوچھتا ہے "آپ کون ہیں؟" Authorization پوچھتا ہے "آپ کیا کر سکتے ہیں؟"
اگر آپ سیکیورٹی کے بغیر کوئی AI پلیٹ فارم بناتے ہیں، تو کوئی بھی نجی ڈیٹا تک رسائی حاصل کر سکتا ہے۔ وہ صارف کے پروفائلز تبدیل کر سکتے ہیں یا طلباء کی پیشرفت دیکھ سکتے ہیں۔ آپ کو اپنے وسائل کی حفاظت کرنی چاہیے۔
JWT (JSON Web Token) اس کا حل ہے۔ ہر درخواست کے ساتھ پاس ورڈ بھیجنے کے بجائے، صارف ایک محفوظ ٹوکن بھیجتا ہے۔
ورک فلو (Workflow):
- صارف کا اندراج (Register user)
- پاس ورڈ کو ہیش (Hash) کرنا
- لاگ ان اور معلومات کی تصدیق کرنا
- JWT ٹوکن تیار کرنا
- محفوظ راستوں (protected routes) تک رسائی
آپ کو یہ ٹولز استعمال کرنے چاہئیں:
- پاس ورڈ ہیشنگ کے لیے bcrypt کے ساتھ passlib
- ٹوکن جنریشن کے لیے python-jose
پاس ورڈز کو کبھی بھی سادہ متن (plain text) میں محفوظ نہ کریں۔ اگر کوئی ہیکر آپ کا ڈیٹا بیس چرا لیتا ہے، تو اسے سب کچھ مل جائے گا۔ اس کے بجائے، ہیش (hash) محفوظ کریں۔
ایک ہیش "password123" کو بے ترتیب حروف کی ایک لمبی سٹرنگ میں تبدیل کر دیتا ہے۔ آپ ہیش کو واپس پاس ورڈ میں تبدیل نہیں کر سکتے۔ آپ صرف یہ تصدیق کرتے ہیں کہ آیا ان پٹ ہیش سے مطابقت رکھتا ہے یا نہیں۔
اسے کیسے بنائیں:
رجسٹریشن (Registration) صارف یوزر نیم اور پاس ورڈ بھیجتا ہے۔ آپ پاس ورڈ کو ہیش کرتے ہیں اور اسے اپنے ڈیٹا بیس میں محفوظ کرتے ہیں۔
لاگ ان (Login) صارف اپنی معلومات بھیجتا ہے۔ آپ محفوظ شدہ ہیش تلاش کرتے ہیں۔ آپ پاس ورڈ کی تصدیق کے لیے لائبریری کا استعمال کرتے ہیں۔ اگر وہ میچ ہو جائے، تو آپ ایک ٹوکن بناتے ہیں۔
JWT جنریشن (JWT Generation) ایک ٹوکن میں صارف کا ڈیٹا اور ختم ہونے کا وقت (expiry time) شامل ہوتا ہے۔ آپ ایک خفیہ کلید (secret key) کے ساتھ ٹوکن پر دستخط (sign) کرتے ہیں۔ اگر کوئی صارف ڈیٹا تبدیل کرنے کی کوشش کرتا ہے، تو دستخط (signature) ناکام ہو جاتے ہیں۔
لاگ ان کا رسپانس کچھ اس طرح نظر آتا ہے: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
اب صارف کے پاس آپ کے سسٹم کی چابی ہے۔
اگلے حصے میں، ہم سیکھیں گے کہ مخصوص راستوں (routes) کی حفاظت کرنے اور صارف کے کرداروں (user roles) کو مینیج کرنے کے لیے ان ٹوکنز کا استعمال کیسے کیا جائے۔
مراحل کا خلاصہ:
- صارف کا اندراج
- پاس ورڈ کو ہیش اور محفوظ کرنا
- لاگ ان کے دوران پاس ورڈ کی تصدیق
- دستخط شدہ (signed) JWT تیار کرنا
Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi