OAuth کیا ہے؟ “Google سے سائن ان” اور تفویض شدہ رسائی کی وضاحت
OAuth ایک کھلا معیار ہے جو صارف کو اپنا پاس ورڈ دیے بغیر ایک ایپ کو دوسری سروس پر اپنے اکاؤنٹ تک محدود رسائی دینے دیتا ہے۔ جب آپ “Connect Google Calendar” پر کلک کرتے ہیں اور ایک اسکرین نظر آتی ہے جو پوچھتی ہے “کیا اس ایپ کو آپ کے ایونٹس دیکھنے کی اجازت دیں؟”، تو یہ OAuth ہے۔ ایپ کو صرف اسی چیز کے لیے ایک ٹوکن ملتا ہے جو آپ نے منظور کی، اور آپ اسے کسی بھی وقت منسوخ کر سکتے ہیں۔ وہی نظام، ایک اضافی تہہ OpenID Connect کے ساتھ، “Sign in with Google” اور ایسے دوسرے بٹنوں کو طاقت دیتا ہے۔
AI کے ساتھ بناتے وقت OAuth کیوں اہم ہے
جب آپ ایپ بناتے ہیں تو OAuth دو عام صورتوں میں سامنے آتا ہے:
- سوشل لاگ اِن۔ آپ چاہتے ہیں کہ آپ کے صارفین نیا پاس ورڈ بنانے کے بجائے “Sign in with Google” (یا Apple، Microsoft، GitHub) استعمال کریں۔ دیکھیں اپنی ایپ میں لاگ اِن کیسے شامل کریں۔
- صارفین کے دوسری سروسز پر اکاؤنٹس سے جڑنا۔ آپ کی ایپ کو کسی صارف کا کیلنڈر پڑھنا، ان کے سوشل اکاؤنٹ پر پوسٹ کرنا، ان کے کلاؤڈ ڈرائیو سے فائلیں لانا، یا ان کا اکاؤنٹنگ ڈیٹا سنک کرنا پڑ سکتا ہے۔
دونوں صورتوں میں آپ کا AI بلڈر کوڈ لکھ سکتا ہے، لیکن کچھ مراحل صرف آپ کر سکتے ہیں: فراہم کنندہ کے ساتھ ڈویلپر ایپ بنانا، client ID اور client secret حاصل کرنا، callback URLs رجسٹر کرنا، اور کچھ اجازتوں کے لیے فراہم کنندہ کا جائزہ پاس کرنا۔ OAuth کیسے کام کرتا ہے یہ جاننے سے ان مراحل، اور ان سے پیدا ہونے والی غلطیاں، کم پراسرار لگتی ہیں۔ لاگ اِن کی بڑی تصویر کے لیے دیکھیں authentication کیا ہے۔
روزمرہ کی مثال
ایک ہوٹل کے کی-کارڈ کا تصور کریں۔ چیک اِن پر فرنٹ ڈیسک تصدیق کرتی ہے کہ آپ کون ہیں، پھر ایک کارڈ دیتی ہے جو آپ کا کمرہ اور جم کھولتا ہے، دوسرے کمرے یا اسٹاف کے علاقے نہیں، اور چیک آؤٹ پر کام کرنا بند کر دیتا ہے۔ کارڈ میں آپ کا پاسپورٹ نہیں ہوتا۔ اگر آپ اسے کھو دیں تو ڈیسک اسے منسوخ کر کے نیا جاری کر دیتی ہے۔
- فرنٹ ڈیسک authorization server ہے (Google کا سائن ان صفحہ)۔
- آپ کی شناخت کی جانچ آپ کا Google میں لاگ اِن کرنا ہے۔
- کی-کارڈ access token ہے۔
- “صرف کمرہ اور جم” وہ scopes ہیں جو آپ نے منظور کیے۔
- چیک آؤٹ ٹوکن کا ختم ہونا ہے، یا آپ کا رسائی منسوخ کرنا۔
جو ایپ آپ استعمال کر رہے ہیں وہ کبھی آپ کا Google پاس ورڈ نہیں دیکھتی، صرف کی-کارڈ دیکھتی ہے۔
OAuth قدم بہ قدم کیسے کام کرتا ہے
ویب ایپس کے لیے سب سے عام بہاؤ authorization code flow ہے۔ جب صارف اپنا Google Calendar ایک شیڈولنگ ایپ سے جوڑتا ہے تو یہ ہوتا ہے:
- کلک۔ صارف “Connect Google Calendar” پر کلک کرتا ہے۔
- فراہم کنندہ کی طرف redirect۔ ایپ براؤزر کو اپنے client ID، مطلوبہ scopes (کیلنڈر ایونٹس پڑھنا) اور redirect URI کے ساتھ Google کی طرف بھیجتی ہے، جہاں Google صارف کو واپس بھیجے۔
- لاگ اِن اور رضامندی۔ صارف Google میں سائن ان کرتا ہے (اگر پہلے سے نہ ہو) اور رضامندی کی اسکرین دیکھتا ہے جس میں درج ہوتا ہے کہ ایپ کیا مانگ رہی ہے۔ وہ Allow پر کلک کرتا ہے۔
- کوڈ کے ساتھ واپسی۔ Google براؤزر کو ایپ کے redirect URI پر ایک مختصر مدت کے، ایک بار استعمال ہونے والے authorization code کے ساتھ واپس بھیجتا ہے۔
- سرور پر تبادلہ۔ ایپ کا سرور وہ کوڈ، اپنے client secret کے ساتھ، براہِ راست Google کو بھیجتا ہے اور ایک access token (اور اکثر ایک refresh token) وصول کرتا ہے۔
- API استعمال۔ سرور access token کے ساتھ Google Calendar API کو کال کرتا ہے اور صارف کے ایونٹس لاتا ہے۔
مرحلہ 4 کا callback کچھ اس طرح ہوتا ہے:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
اور مرحلہ 5 کا ٹوکن ردِعمل JSON کی طرح ہوتا ہے:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
ڈیزائن کا اہم نکتہ: ٹوکن کا تبادلہ سرور سے سرور کے درمیان ہوتا ہے، اس لیے client secret اور ٹوکنز کو کبھی براؤزر سے گزرنا نہیں پڑتا۔
OAuth بمقابلہ OpenID Connect بمقابلہ آپ کا اپنا لاگ اِن
| یہ کس سوال کا جواب دیتا ہے | مثال | |
|---|---|---|
| OAuth 2.0 | “یہ ایپ صارف کی طرف سے کیا کر سکتی ہے؟” (اجازت) | صارف کا کیلنڈر پڑھنا |
| OpenID Connect (OIDC) | “یہ صارف کون ہے؟” (شناخت)، OAuth پر بنا ہوا | “Sign in with Google” ایک تصدیق شدہ ای میل واپس کرتا ہے |
| آپ کا اپنا لاگ اِن | “کیا یہ اس اکاؤنٹ کا درست پاس ورڈ ہے؟” | آپ کے ڈیٹا بیس میں محفوظ (hashed) ای میل اور پاس ورڈ |
بہت سی ایپس انہیں ملا کر استعمال کرتی ہیں: ای میل اور پاس ورڈ کا لاگ اِن، ساتھ میں OIDC کے ذریعے “Sign in with Google”، اور دوسری سروسز سے الگ OAuth کنکشنز۔
اہم اصطلاحات
| اصطلاح | مطلب |
|---|---|
| Provider / authorization server | وہ سروس جس میں صارف لاگ اِن کرتا ہے اور رسائی دیتا ہے، جیسے Google، Microsoft، GitHub۔ |
| Client | آپ کی ایپ، جیسے فراہم کنندہ کے ساتھ رجسٹر کی گئی ہو۔ |
| Client ID | فراہم کنندہ کے ساتھ آپ کی ایپ کا عوامی شناخت کنندہ۔ |
| Client secret | فراہم کنندہ کے ساتھ آپ کی ایپ کا نجی پاس ورڈ۔ صرف سرور پر۔ |
| Scope | ایک مخصوص اجازت، جیسے “کیلنڈر پڑھنا” یا “ای میل ایڈریس دیکھنا”۔ |
| Consent screen | وہ صفحہ جہاں صارف مانگے گئے scopes دیکھتا اور منظور کرتا ہے۔ |
| Redirect URI / callback URL | وہ جگہ جہاں فراہم کنندہ صارف کو واپس بھیجتا ہے۔ پہلے سے رجسٹر ہونا اور بالکل میل کھانا ضروری ہے۔ |
| Access token | API کال کرنے کے لیے مختصر مدت کی اسناد۔ |
| Refresh token | نئے access tokens لینے کے لیے طویل مدت کی اسناد۔ اسے پاس ورڈ کی طرح محفوظ رکھیں۔ |
| ID token | OIDC میں ایک دستخط شدہ ٹوکن جو بتاتا ہے کہ صارف کون ہے۔ |
| PKCE | ایک اضافی جانچ (“proof key”) جو روکتی ہے کہ روکے گئے کوڈ استعمال ہوں۔ تمام کلائنٹس کے لیے تجویز کردہ۔ |
| state | ایک بے ترتیب قدر جو جعلی درخواستوں کے خلاف بہاؤ کی حفاظت کرتی ہے۔ |
عام غلط فہمیاں
- “OAuth ایک لاگ اِن سسٹم ہے۔” سادہ OAuth رسائی دیتا ہے؛ شناخت OpenID Connect سنبھالتا ہے۔ کسی خام access token کو یہ ثبوت سمجھنا کہ کوئی شخص کون ہے، حقیقی سیکیورٹی بگز کی وجہ بنا ہے۔
- “ایپ کو میرا پاس ورڈ مل جاتا ہے۔” ایسا کبھی نہیں ہوتا۔ یہی تو بات ہے۔
- “زیادہ scopes مانگنا بے ضرر ہے۔” صارفین وسیع درخواستوں سے زیادہ محتاط ہوتے ہیں، اور Google جیسے فراہم کنندگان حساس یا محدود scopes کے لیے ایپ کا جائزہ مانگ سکتے ہیں۔ صرف وہی مانگیں جس کی ضرورت ہو۔
- “کلائنٹ سیکرٹ فرنٹ اینڈ میں رکھا جا سکتا ہے۔” براؤزر کے کوڈ میں موجود ہر چیز عوامی ہے۔ اسے سرور سائیڈ secrets میں رکھیں۔
- “ٹیسٹنگ میں کام کرتا ہے، تو پروڈکشن میں بھی کرے گا۔” فراہم کنندگان اکثر غیر تصدیق شدہ ایپس کو محدود کرتے ہیں، مثلاً درج شدہ ٹیسٹ صارفین تک، اور آپ کے لائیو domain کا redirect URI الگ سے رجسٹر کرنا ہوتا ہے۔
- “ٹوکن ہمیشہ کے لیے رہتے ہیں۔” Access tokens جلد ختم ہو جاتے ہیں، اور صارفین رسائی منسوخ کر سکتے ہیں۔ آپ کی ایپ کو دونوں کو بخوبی سنبھالنا ہوگا۔
اپنے AI بلڈر سے کیا پوچھیں
- “OpenID Connect کے ذریعے ایک اچھی طرح برقرار رکھی گئی auth لائبریری کے ساتھ ‘Sign in with Google’ شامل کریں — OAuth بہاؤ خود سے نہ بنائیں۔”
- “PKCE کے ساتھ authorization code flow استعمال کریں اور
stateparameter کی جانچ کریں۔” - “client ID اور client secret سرور پر ماحولیاتی متغیرات سے پڑھیں۔”
- “صرف وہی scopes مانگیں جن کی ضرورت ہے: کیلنڈر کی صرف پڑھنے کی رسائی۔”
- “مجھے بتائیں کہ فراہم کنندہ کے کنسول میں کون سے تمام redirect URLs رجسٹر کرنے ہیں، پری ویو، شائع شدہ URL اور میرے کسٹم domain کے لیے۔”
- “refresh tokens کو ڈیٹا بیس میں خفیہ کر کے محفوظ کریں، اور منسوخ یا ختم شدہ ٹوکنز کو اس طرح سنبھالیں کہ صارف سے دوبارہ کنکشن کرنے کو کہا جائے۔”
- “صارفین کو ان کی ترتیبات کے صفحے سے integration منقطع کرنے دیں۔”
OAuth اور Mythex
Mythex میں بنی ایپس کے لیے اختتامی صارف کا بلٹ اِن لاگ اِن نہیں ہے؛ اس کی docs ایک “اپنا لائیں” طریقہ بیان کرتی ہیں: آپ ایک auth لائبریری یا ہوسٹڈ فراہم کنندہ چنتے ہیں، اس کی keys کو پروجیکٹ secrets کے طور پر رکھتے ہیں، اور ایجنٹ کوڈ لکھتا ہے۔ authentication شامل کرنے کی recipe میں اس کے لیے ایک ابتدائی پرامپٹ ہے۔ Mythex کے اپنے استعمال میں بھی آپ کو OAuth ملے گا: آپ Google سے سائن اَپ کر سکتے ہیں، repo sync کے لیے GitHub جوڑنا GitHub OAuth استعمال کرتا ہے، اور AI کلائنٹس جو MCP کے ذریعے Mythex سے جڑتے ہیں وہ ایک رضامندی کے صفحے سے گزرتے ہیں۔ مزید کے لیے دیکھیں authentication کیا ہے اور دو عنصری تصدیق کیا ہے۔
سوالات
آسان الفاظ میں OAuth کیا ہے؟
OAuth ایک معیاری طریقہ ہے جس میں صارف ایک ایپ کو دوسری سروس پر اپنے اکاؤنٹ تک محدود رسائی دیتا ہے، جیسے ایک شیڈولنگ ایپ کو اپنا Google Calendar پڑھنے دینا، بغیر اس ایپ کو اپنا پاس ورڈ دیے۔ صارف مخصوص اجازتیں منظور کرتا ہے، اور ایپ ایک ٹوکن حاصل کرتی ہے جو صرف انہی کاموں کے لیے استعمال ہو سکتا ہے۔
کیا OAuth، “Google سے سائن ان” جیسا ہی ہے؟
“Google سے سائن ان” OAuth 2.0 اور OpenID Connect پر بنا ہے، جو OAuth کے اوپر ایک تہہ ہے اور ایپ کو یہ بتانے کا معیاری طریقہ شامل کرتی ہے کہ صارف کون ہے۔ تنہا OAuth رسائی دینے کے بارے میں ہے؛ OpenID Connect اسے لاگ اِن میں بدلتا ہے۔
OAuth access token کیا ہوتا ہے؟
Access token وہ اسناد ہے جو ایپ کسی سروس کے API کو بھیجتی ہے تاکہ ثابت کرے کہ اسے رسائی دی گئی ہے۔ یہ عموماً مختصر مدت کا ہوتا ہے اور صرف ان اجازتوں (scopes) تک محدود ہوتا ہے جو صارف نے منظور کیں۔ Refresh token، اگر جاری ہو، تو ایپ کو صارف سے دوبارہ پوچھے بغیر نئے access tokens لینے دیتا ہے۔
redirect_uri_mismatch کا کیا مطلب ہے؟
اس کا مطلب ہے کہ سائن ان کے دوران آپ کی ایپ نے جو callback URL بھیجا وہ فراہم کنندہ کے developer console میں رجسٹر شدہ URL سے بالکل میل نہیں کھاتا۔ ہر اس پتے کے لیے جہاں آپ کی ایپ چلتی ہے، بالکل درست URL شامل کریں، جس میں https، domain، path اور آخر میں آنے والا trailing slash بھی شامل ہو۔
کیا OAuth محفوظ ہے؟
OAuth 2.0 بڑے پیمانے پر استعمال ہوتا ہے اور درست طریقے سے نافذ کیے جانے پر محفوظ ہے: authorization code flow کو PKCE کے ساتھ استعمال کرنا، درست redirect URLs، state parameter، اور client secret اور ٹوکنز کو سرور پر رکھنا۔ زیادہ تر مسائل نافذ کرنے کے شارٹ کٹس سے آتے ہیں، اس لیے کسی اچھی طرح برقرار رکھی گئی لائبریری استعمال کرنے کی سفارش کی جاتی ہے۔