OAUTH کی تاریخ: پاس ورڈز سے عالمی معیار تک

آپ اسے روزانہ دیکھتے ہیں۔ آپ "Login with Google" یا "Login with GitHub" پر کلک کرتے ہیں۔ آپ پاس ورڈ ٹائپ نہیں کرتے۔ آپ فوری طور پر سائٹ میں داخل ہو جاتے ہیں۔

یہ OAuth کی وجہ سے ممکن ہوتا ہے۔ یہ سیکیورٹی کے لیے ایک عالمی معیار ہے۔ لیکن اس کا آغاز اس طرح نہیں ہوا تھا۔ یہ بڑے مسائل کو حل کرنے کے لیے ارتقاء پذیر ہوا۔

پاس ورڈز کے ساتھ مسئلہ

ابتدائی دنوں میں، آپ ہر ویب سائٹ کے لیے ایک نیا پاس ورڈ بناتے تھے۔ اس سے تین بڑے مسائل پیدا ہوئے:

  • لوگ ہر جگہ ایک ہی پاس ورڈ استعمال کرتے تھے۔ اگر ایک سائٹ سے ڈیٹا لیک ہو جاتا، تو ہر اکاؤنٹ خطرے میں پڑ جاتا۔
  • لوگ پاس ورڈ بھول جاتے تھے۔ وہ ویب استعمال کرنے کے بجائے "forgot password" پر کلک کرنے میں زیادہ وقت گزارتے تھے۔
  • ویب سائٹس آپ کا اصل پاس ورڈ دیکھ سکتی تھیں۔ اگر کوئی سائٹ ہیک ہو جاتی، تو آپ کا پاس ورڈ چوری ہو جاتا۔

سیکیورٹی کا ارتقاء

  1. Basic Auth: آپ ہر درخواست کے ساتھ اپنا یوزر نیم اور پاس ورڈ بھیجتے تھے۔ اگر آپ HTTPS استعمال نہ کرتے، تو ہیکرز سب کچھ دیکھ سکتے تھے۔

  2. Session Cookies: آپ ایک بار لاگ ان کرتے اور آپ کو ایک session ID مل جاتی۔ یہ بہتر تھا، لیکن XSS یا CSRF جیسے حملوں کے ذریعے کوکیز چوری کی جا سکتی ہیں۔ اس کے علاوہ، ایک سائٹ آپ کے لاگ ان کو دوسری سائٹ سے بات کرنے کے لیے استعمال نہیں کر سکتی تھی۔

  3. API Keys: آپ ایک ویب سائٹ کو ایک خاص کی (key) دیتے تھے۔ یہ بہتر تھا کیونکہ آپ اپنا پاس ورڈ نہیں بھیجتے تھے۔ تاہم، API keys کے پاس اکثر بہت زیادہ اختیارات ہوتے ہیں۔ اگر آپ کسی ایپ کو API key دیتے ہیں، تو اس ایپ کے پاس آپ کے ای میلز پڑھنے، پیغامات بھیجنے اور آپ کا اکاؤنٹ ڈیلیٹ کرنے کا اختیار ہو سکتا ہے۔ یہ بالکل ایسا ہی ہے جیسے آپ ہوٹل کے ویلیٹ کو اپنی کار کی چابی دیں، لیکن وہ چابی آپ کے گھر کا دروازہ بھی کھول دے۔

OAuth کا حل: ویلیٹ کی (Valet Key)

OAuth نے کھیل بدل دیا۔ اپنا پاس ورڈ دینے کے بجائے، آپ ایک "token" دیتے ہیں۔ اسے ایک ویلیٹ کی (valet key) کے طور پر سمجھیں۔ ایک ویلیٹ کی ڈرائیور کو آپ کی کار پارک کرنے کی اجازت دیتی ہے، لیکن یہ اسے آپ کی ڈگی کھولنے یا آپ کے گھر تک رسائی دینے کی اجازت نہیں دیتی۔

عملی طور پر OAuth کیسے کام کرتا ہے:

  • آپ Canva استعمال کرنا چاہتے ہیں اور Google سے تصاویر لینا چاہتے ہیں۔
  • Canva، Google سے اجازت مانگتا ہے۔
  • Google آپ سے پوچھتا ہے: "کیا Canva آپ کی تصاویر دیکھ سکتا ہے؟"
  • آپ کہتے ہیں: "ہاں، لیکن صرف دیکھنا۔ انہیں کچھ بھی ڈیلیٹ کرنے کی اجازت نہ دیں۔"
  • Google، Canva کو ایک مخصوص ٹوکن دیتا ہے۔

Canva کبھی بھی آپ کا Google پاس ورڈ نہیں دیکھتا۔ اگر کوئی ہیکر وہ ٹوکن چوری بھی کر لے، تو وہ صرف کچھ وقت کے لیے تصاویر دیکھ سکتا ہے۔ وہ آپ کا پاس ورڈ تبدیل نہیں کر سکتا اور نہ ہی آپ کے پیسے منتقل کر سکتا ہے۔

جدید سیکیورٹی: PKCE

موبائل ایپس اور ویب ایپس میں ایک کمزوری ہوتی ہے۔ وہ رازوں (secrets) کو اچھی طرح چھپا نہیں سکتیں۔ اسے ٹھیک کرنے کے لیے، ہم PKCE (Proof Key for Code Exchange) استعمال کرتے ہیں۔

یہ ایک ریزرویشن سسٹم کی طرح کام کرتا ہے:

  • ایپ ایک خفیہ کوڈ (the verifier) تخلیق کرتی ہے۔
  • ایپ اس کوڈ کا ایک ہیش شدہ ورژن (the challenge) Google کو بھیجتی ہے۔
  • جب ایپ ٹوکن مانگتی ہے، تو وہ اصل خفیہ کوڈ بھیجتی ہے۔
  • Google چیک کرتا ہے کہ آیا کوڈ چیلنج سے مطابقت رکھتا ہے۔

اگر وہ مطابقت رکھتے ہیں، تو Google جان جاتا ہے کہ یہ وہی ایپ ہے۔ اگر وہ مطابقت نہیں رکھتے، تو Google درخواست کو بلاک کر دیتا ہے۔ یہ ہیکرز کو آپ کا اتھارزیشن کوڈ چوری کرنے سے روکتا ہے۔

OAuth کا روڈ میپ

  • 2007 (OAuth 1.0): بہت پیچیدہ تھا اور اس میں بھاری ریاضی (math) استعمال ہوتی تھی۔
  • 2012 (OAuth 2.0): تیز اور آسان۔ اس میں ٹوکنز کا استعمال کیا گیا اور HTTPS لازمی قرار دیا گیا۔
  • 2016 (OAuth 2.0 + PKCE): موبائل اور جدید ویب ایپس کے لیے سیکیورٹی کا اضافہ کیا گیا۔
  • 2023 (OAuth 2.1): نیا گولڈ اسٹینڈرڈ۔ یہ پرانے اور غیر محفوظ طریقوں کو ختم کرتا ہے۔

بنیادی سبق: اپنا پاس ورڈ کبھی بھی کسی دوسری ایپ کو نہ دیں۔ انہیں ایک محدود ٹکٹ دیں جو ایک وقت کے بعد ختم ہو جائے۔ اس طرح آپ کا کنٹرول برقرار رہتا ہے۔

ماخذ: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4