OpenID Connect ایک تصدیقی پروٹوکول ہے جو OAuth 2.0 کے اوپر بنایا گیا ہے اور معیاری اجازت نامہ میں صارف کی شناخت کی تصدیق کی ایک پرت شامل کرتا ہے۔ خالص OAuth 2.0 کے برعکس، جہاں access token صارف کی معلومات کے بغیر وسائل تک رسائی فراہم کرتا ہے، OpenID Connect ایک ID Token — ایک JWT جس میں تصدیق شدہ پروفائل ڈیٹا ہوتا ہے — واپس کرتا ہے۔ OpenID Foundation, 2026 کے مطابق، یہ پروٹوکول تمام بڑے Identity Providers — Google، Apple، Microsoft اور Auth0 — کے ذریعے تعاون یافتہ ہے۔
اہم نکات
OpenID Connect (OIDC) ایک کھلا تصدیقی پروٹوکول ہے جو OAuth 2.0 کے اوپر ایک توسیع کے طور پر بنایا گیا ہے۔ یہ اس چیز کو معیاری بناتا ہے جو OAuth 2.0 میں غائب تھی: صارف کی شناخت کی تصدیق۔ اگر OAuth 2.0 سوال کا جواب دیتا ہے “کس ایپلیکیشن تک رسائی ہے؟”، تو OIDC جواب دیتا ہے “یہ صارف اصل میں کون ہے؟”
پروٹوکول ایک ID Token — ایک JSON Web Token (JWT) جس میں دعوؤں کا ایک سیٹ ہوتا ہے: ایک منفرد موضوع شناخت کنندہ، ای میل، نام، اوتار، اجراء اور میعاد ختم ہونے کے ٹائم اسٹیمپ — استعمال کرتا ہے۔ کلائنٹ ایپلیکیشن ID Token کو خفیہ نگاری سے تصدیق کر سکتی ہے — سرور RS256 یا ES256 کا استعمال کرتے ہوئے ٹوکن پر دستخط کرتا ہے، اور کلائنٹ JWKS اینڈ پوائنٹ کے ذریعے حاصل کردہ عوامی کلید کے خلاف دستخط کی جانچ کرتا ہے۔
Auth0, 2025 کے مطابق، تیسرے فریق کی تصدیق استعمال کرنے والی 78% سے زیادہ موبائل ایپلیکیشنز Google Sign-In یا Sign in with Apple کے ذریعے OIDC استعمال کرتی ہیں۔ یہ پروٹوکول کو سماجی لاگ ان اور کاروباری تصدیق کے لیے حقیقی معیار بناتا ہے۔
OpenID Connect کلائنٹ کی قسم کے لحاظ سے کئی بہاؤ (flows) کی وضاحت کرتا ہے۔ موبائل ایپلیکیشنز کے لیے، معیار Proof Key for Code Exchange (PKCE) کے ساتھ Authorization Code Flow ہے — یہ ڈیوائس پر client secret کے بغیر بھی تحفظ فراہم کرتا ہے۔
شناخت فراہم کنندہ (IdP) ایک سرور ہے جو صارفین کی تصدیق کرتا ہے اور ٹوکن جاری کرتا ہے۔ OIDC ماحولیاتی نظام میں، IdP دو اہم اینڈ پوائنٹ فراہم کرتا ہے: صارف لاگ ان کے لیے Authorization Endpoint اور کوڈ کو ٹوکن سے تبدیل کرنے کے لیے Token Endpoint۔ کلائنٹ Discovery URL — معیاری راستہ /.well-known/openid-configuration — کے ذریعے ان اینڈ پوائنٹس کے پتے دریافت کرتا ہے، جو مکمل فراہم کنندہ ترتیب کے ساتھ JSON دستاویز واپس کرتا ہے۔
ہر IdP اپنا JWKS (JSON Web Key Set) شائع کرتا ہے — ID Token کے دستخط کی تصدیق کے لیے عوامی کلیدوں کا ایک سیٹ۔ کلائنٹ ان کلیدوں کو کیش کرتا ہے اور سرور سے رابطہ کیے بغیر موصول ہونے والے ہر ٹوکن کی تصدیق کے لیے استعمال کرتا ہے۔
Authorization Code Flow تین مراحل پر مشتمل عمل ہے۔ پہلے، موبائل ایپلیکیشن ایک code verifier (43–128 حروف کی بے ترتیب سٹرنگ) اور اس کا ہیش — code challenge — پیدا کرتی ہے۔ ایپلیکیشن ایک براؤزر یا WebView کھولتی ہے جس میں client_id، redirect_uri، scope (openid profile email) اور code challenge پر مشتمل URL ہوتا ہے۔ صارف IdP صفحہ پر اسناد درج کرتا ہے اور رضامندی کی تصدیق کرتا ہے۔ IdP براؤزر کو authorization code کے ساتھ ایپلیکیشن پر واپس بھیج دیتا ہے۔
دوسرے مرحلے میں، ایپلیکیشن authorization code، code verifier اور client_id کو سرور کے Token Endpoint پر بھیجتی ہے۔ سرور code verifier کو ذخیرہ شدہ code challenge کے خلاف تصدیق کرتا ہے اور ID Token، Access Token اور اختیاری طور پر Refresh Token واپس کرتا ہے۔ تیسرے مرحلے میں، ایپلیکیشن ID Token کی تصدیق کرتی ہے: JWKS کے خلاف دستخط کی توثیق کرتی ہے، issuer (iss)، audience (aud) اور میعاد ختم ہونے کا وقت (exp) چیک کرتی ہے۔ اگر تصدیق کامیاب ہو جاتی ہے، تو صارف کو تصدیق شدہ سمجھا جاتا ہے۔
PKCE (Proof Key for Code Exchange) عوامی کلائنٹس میں معیاری Authorization Code Flow میں موجود کمزوری کو ختم کرتا ہے۔ چونکہ موبائل ایپلیکیشن client secret کو محفوظ طریقے سے ذخیرہ نہیں کر سکتی، authorization code کو روکنے والا حملہ آور اسے ٹوکن سے تبدیل کر سکتا ہے۔ Code verifier اس مسئلے کو حل کرتا ہے: چاہے کوڈ روک لیا جائے، اصل code verifier کے بغیر تبادلہ ناممکن ہے۔ OAuth Security Best Practices (RFC 9700) موبائل ایپلیکیشنز سمیت تمام عوامی کلائنٹس کے لیے PKCE کی ضرورت ہے۔
OpenID Connect دو بنیادی طور پر مختلف ٹوکن واپس کرتا ہے: ID Token اور Access Token۔ ID Token ہمیشہ ایک JWT ہوتا ہے جسے کلائنٹ خود پڑھ اور تصدیق کر سکتا ہے۔ اس میں صارف کی معلومات ہوتی ہیں اور یہ API رسائی کے لیے نہیں بلکہ تصدیق کے لیے استعمال ہوتا ہے۔
ID Token ایک header، payload اور signature پر مشتمل ہوتا ہے، جو Base64 میں انکوڈ اور نقطوں سے الگ ہوتے ہیں۔ Header میں alg (دستخط الگورتھم) اور kid (کلید شناخت کنندہ) ہوتا ہے۔ Payload میں لازمی دعوے شامل ہیں: iss (issuer)، sub (subject — منفرد صارف ID)، aud (audience — کلائنٹ شناخت کنندہ)، exp (expiration)، iat (issued at)۔ اختیاری دعووں میں name، email، picture، locale شامل ہیں۔
Google سے ڈی کوڈ کردہ ID Token payload کی مثال:
{
"iss": "https://accounts.google.com",
"sub": "1234567890",
"aud": "my-app-123.apps.googleusercontent.com",
"exp": 1812345678,
"iat": 1812342078,
"name": "Ivan Petrov",
"email": "ivan@example.com"
}
Access Token ایک مبہم ٹوکن (صوابدیدی سٹرنگ) یا JWT ہے جسے کلائنٹ API درخواستوں میں بھیجتا ہے۔ ID Token کے برعکس، access token کلائنٹ کے پڑھنے کے لیے نہیں ہے — اس کی شکل اور مواد صرف وسائل سرور اور اجازت نامہ سرور کو معلوم ہوتے ہیں۔ Access Token کا ایک دائرہ کار (scope) — اجازت کی پابندی — اور ایک مختصر زندگی ہوتی ہے، عام طور پر 15–60 منٹ۔
OAuth 2.0 ایک اجازت نامہ کا فریم ورک ہے جو یہ بتاتا ہے کہ ایپلیکیشن صارف کے وسائل تک رسائی کیسے حاصل کرتی ہے۔ OpenID Connect ایک توسیع ہے جو اس عمل میں تصدیق شامل کرتی ہے۔ اہم فرق: OAuth 2.0 ٹوکن کی شکل کی وضاحت نہیں کرتا اور ایپلیکیشن کو یہ جاننے کا طریقہ نہیں دیتا کہ درخواست اصل میں کس نے کی۔
| پیرامیٹر | OAuth 2.0 | OpenID Connect |
|---|---|---|
| مقصد | وسائل تک رسائی کے لیے اجازت نامہ | تصدیق + اجازت نامہ |
| شناختی ٹوکن | نہیں | ID Token (JWT) |
| دائرہ کار (Scope) | api:read, api:write | openid, profile, email |
| UserInfo Endpoint | اختیاری | معیاری |
| واحد لاگ آؤٹ | نہیں | OpenID Connect Session Management تفصیلات |
OpenID Connect ضروری ہے جب ایپلیکیشن کو صارف کے ڈیٹا تک رسائی حاصل کرنے کے بجائے صارف کی شناخت کرنے کی ضرورت ہو۔ اگر آپ “Google سے سائن ان” یا “Apple سے سائن ان” استعمال کرتے ہیں — یہ OIDC ہے۔ اگر آپ کی ایپلیکیشن صارف کی شناخت جانے بغیر اس کی طرف سے تیسرے فریق کی API کو کال کرتی ہے — خالص OAuth 2.0 کافی ہے۔ Single Sign-On (SSO) والے کاروباری نظاموں کے لیے، انتخاب واضح ہے: صرف OpenID Connect، کیونکہ یہ معیاری لاگ آؤٹ اور سیشن مینجمنٹ فراہم کرتا ہے۔
OpenID Connect کو موبائل ایپلیکیشن میں ضم کرنے کے لیے صحیح لائبریری کا انتخاب اور بہاؤ کی درست ترتیب ضروری ہے۔ Android کے لیے، اسناد مینیجر (AndroidX Credentials) یا AppAuth لائبریری استعمال کریں۔ iOS کے لیے، ASWebAuthenticationSession کے ساتھ AuthenticationServices فریم ورک استعمال کریں۔
ذیل میں AppAuth-Android لائبریری کا استعمال کرتے ہوئے Authorization Code Flow شروع کرنے کی ایک مثال ہے۔ ایپلیکیشن ایک اجازت نامہ کی درخواست بناتی ہے، صارف لاگ ان کے لیے براؤزر کھولتی ہے، اور ٹوکن کے ساتھ کال بیک پر کارروائی کرتی ہے۔
val authRequest = AuthorizationRequest.Builder(
serviceConfig,
clientId,
"code",
Uri.parse("com.example.app:/oauth")
)
.setScope("openid profile email")
.build()
val authService = AuthorizationService(this)
val intent = authService.getAuthorizationRequestIntent(authRequest)
startActivityForResult(intent, REQUEST_CODE)
override fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?
) {
if (requestCode == REQUEST_CODE) {
val response = AuthorizationResponse.fromIntent(data)
if (response?.authorizationCode != null) {
exchangeCodeForTokens(response.authorizationCode)
}
}
}
Apple کا ASWebAuthenticationSession iCloud Keychain کے ذریعے SSO تعاون کے ساتھ OIDC بہاؤ کے لیے ایک بلٹ ان براؤزر فراہم کرتا ہے۔ سیشن اجازت نامہ URL کے ساتھ شروع ہوتا ہے، اور کال بیک کو completion handler کے ذریعے سنبھالا جاتا ہے۔
OpenID Connect کے لیے لائبریری کا انتخاب کرتے وقت، بلٹ ان PKCE تعاون پر غور کریں: AppAuth-Android اور AppAuth-iOS ڈیفالٹ طور پر PKCE کو سپورٹ کرتی ہیں۔ Firebase Authentication Google Sign-In، Sign in with Apple اور Microsoft کے لیے اندرونی طور پر OIDC استعمال کرتا ہے „ ڈویلپر کو دستی طور پر بہاؤ لاگو کرنے کی ضرورت نہیں ہے۔ کسٹم IdP (مثال کے طور پر، Keycloak یا Okta) والے کاروباری نظاموں کے لیے، AppAuth ترتیب اور خرابی سے نمٹنے پر مکمل کنٹرول کے ساتھ معیاری انتخاب ہے۔
let authURL = URL("https://accounts.google.com/o/oauth2/v2/auth")!
let callbackURL = URL("com.example.app://oauth")!
let session = ASWebAuthenticationSession(
url: authURL,
callbackURLScheme: callbackURL.scheme!
) { url, error in
guard let url = url else { return }
let components = URLComponents(url: url)
let code = components?.queryItems?.first(where: { $0.name == "code" })?.value
if let code = code { exchangeCode(code) }
}
session.start()
اکثر پوچھے گئے سوالات
OpenID Connect OAuth 2.0 کے اوپر ایک توسیع ہے جو تصدیق شامل کرتی ہے۔ OAuth 2.0 صرف وسائل تک رسائی کے لیے اجازت نامہ سنبھالتا ہے۔ OIDC ID Token — صارف کے ڈیٹا کے ساتھ JWT — متعارف کراتا ہے، UserInfo اینڈ پوائنٹ کو معیاری بناتا ہے، اور Single Sign-On اور لاگ آؤٹ کی صلاحیتیں شامل کرتا ہے۔
موبائل ایپلیکیشنز کے لیے، PKCE کے ساتھ Authorization Code Flow تجویز کیا جاتا ہے۔ اسے client secret کی ضرورت نہیں، یہ authorization code کی روک تھام سے بچاتا ہے، اور تمام بڑے Identity Providers کے ذریعے تعاون یافتہ ہے۔ Implicit Flow متروک ہے اور نئے منصوبوں میں استعمال نہیں ہونا چاہیے۔
ID Token کی تصدیق تین مراحل میں ہوتی ہے: JWKS اینڈ پوائنٹ سے عوامی کلید کا استعمال کرتے ہوئے دستخط کی توثیق، دعوؤں (iss, aud, exp) کی جانچ، اور payload ڈی کوڈنگ۔ زیادہ تر SDK — AppAuth، MSAL، Google Sign-In — ٹوکن موصول ہونے پر یہ تصدیق خود بخود انجام دیتے ہیں۔
openid دائرہ کار ایک لازمی پیرامیٹر ہے جو OIDC درخواست کو عام OAuth 2.0 درخواست سے ممتاز کرتا ہے۔ اس کے بغیر، سرور ID Token واپس نہیں کرے گا۔ اضافی دائرہ کار — profile، email، address — یہ طے کرتے ہیں کہ ٹوکن میں صارف کے کون سے مخصوص دعوے شامل کیے جائیں گے۔
تکنیکی طور پر ہاں، Resource Owner Password Credentials بہاؤ کے ذریعے، لیکن اس کی سفارش نہیں کی جاتی۔ براؤزر کا بہاؤ اسناد کی علیحدگی فراہم کرتا ہے — ایپلیکیشن صارف کا پاس ورڈ کبھی نہیں دیکھتی۔ Apple اور Google اپنی خدمات کے لیے براؤزر پر مبنی تصدیق کی ضرورت کرتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں