iOS اور Android ڈویلپمنٹ میں Access Token — کلیدی تصورات، ٹوکن کی اقسام اور یہ کیسے کام کرتا ہے

مصنف: IT Sectr اشاعت: 2026-04-06 مطالعے کا وقت: 9 منٹ

Access Token — وہ اسناد ہیں جو کلائنٹ ایپلیکیشن محفوظ API وسائل تک رسائی کے لیے سرور کو پیش کرتی ہے۔ صارف کی تصدیق کے بعد، اجازت نامہ سرور ایک access token جاری کرتا ہے، جسے کلائنٹ ہر درخواست کے ساتھ HTTP ہیڈر Authorization میں بھیجتا ہے۔ OAuth.net، 2025 کے مطابق، access token opaque string (بغیر معنی کے کوئی بھی سٹرنگ) یا JWT (اندر ڈیٹا والا خود کفیل ٹوکن) ہو سکتا ہے — فارمیٹ کا انتخاب سسٹم کے آرکیٹیکچر اور کارکردگی کی ضروریات پر منحصر ہے۔

اہم نکات

  • Access Token — API کے لیے عارضی پاس، Authorization ہیڈر کے ذریعے منتقل کیا جاتا ہے
  • Opaque token — ایک بے ترتیب سٹرنگ جسے سرور introspection اینڈپوائنٹ کے ذریعے تصدیق کرتا ہے
  • JWT فارمیٹ — ایک خود کفیل دستخط شدہ ٹوکن، سرور کی درخواست کے بغیر مقامی طور پر تصدیق شدہ
  • مختصر TTL — ٹوکن لیک ہونے پر نقصان کم کرنے کے لیے 15–60 منٹ
  • Scope — access token میں اجازتوں کا ایک محدود سیٹ ہوتا ہے جو طے کرتا ہے کہ کن وسائل تک رسائی ہے

Access Token کیا ہے؟

Access Token — ایک سٹرنگ ہے جسے کلائنٹ (موبائل ایپ، SPA، سرور) محفوظ API اینڈپوائنٹس پر HTTP درخواستوں کی تصدیق کے لیے استعمال کرتا ہے۔ ٹوکن اجازت نامہ سرور کے ذریعے جاری کیا جاتا ہے جب صارف اپنی شناخت کی تصدیق کرتا ہے اور ایپلیکیشن کو مناسب اجازتیں (scope) دیتا ہے۔

Access token OAuth 2.0 پروٹوکول اور اس پر بنائے گئے تمام سسٹمز — OpenID Connect، Firebase Authentication، Auth0، Keycloak — کا مرکزی عنصر ہے۔ Access token کے بغیر، محفوظ API پر کوئی درخواست عمل میں نہیں آئے گی: سرور HTTP 401 Unauthorized لوٹاتا ہے۔ ٹوکن صارف کی براہ راست شناخت نہیں کرتا — یہ تصدیق کرتا ہے کہ کلائنٹ کو صارف کی طرف سے کوئی مخصوص کارروائی کرنے کا حق ہے (اجازت)، نہ کہ صارف کون ہے (تصدیق)۔

Okta، 2025 کے مطابق، 80% سے زیادہ عوامی APIs Authorization ہیڈر میں access token کے ساتھ Bearer اسکیما استعمال کرتی ہیں، پرانے تصدیقی طریقوں — Basic Auth اور API Key — کو ختم کرتی ہوئی۔ Access token تفویض کردہ اجازت (delegated authorization) کی بنیاد بھی ہے — ایک ماڈل جس میں صارف کسی ایپلیکیشن کو کسی دوسری سروس پر اپنے ڈیٹا تک محدود رسائی دیتا ہے۔ مثال کے طور پر، جب کوئی فوٹو ایڈیٹنگ موبائل ایپ OAuth 2.0 کے ذریعے Google Drive تک رسائی کی درخواست کرتی ہے، صارف مخصوص scopes کی فہرست والی ایک رضامندی کی سکرین دیکھتا ہے، اور تصدیق کے بعد ان اجازتوں کے ساتھ ایک access token حاصل کرتا ہے۔

Access Token کیسے کام کرتا ہے

میکانزم access token Bearer اسکیما پر مبنی ہے: کلائنٹ ہر HTTP درخواست میں Authorization: Bearer <token> ہیڈر شامل کرتا ہے۔ وسائل کا سرور (API) ٹوکن وصول کرتا ہے، اسے توثیق کرتا ہے، اور طے کرتا ہے کہ کن وسائل تک رسائی ہے۔ توثیق دو طریقوں سے ہو سکتی ہے: مقامی طور پر (JWT کے لیے) یا introspection اینڈپوائنٹ کے ذریعے (opaque ٹوکن کے لیے)۔

Bearer Token اسکیما

Bearer token کا مطلب ہے کہ جو کوئی بھی ٹوکن پیش کرتا ہے (bearer) اسے متعلقہ رسائی مل جاتی ہے۔ یہ ٹرانسمیشن اور اسٹوریج کے دوران ٹوکن کے تحفظ کے لیے اعلیٰ تقاضے عائد کرتا ہے۔ Bearer اسکیما کے لیے کلائنٹ کو کرپٹوگرافی طور پر ٹوکن کی ملکیت ثابت کرنے کی ضرورت نہیں ہے — صرف اسے منتقل کرنا کافی ہے۔ لہذا، HTTPS لازمی ہے: ٹریفک انکرپشن کے بغیر، حملہ آور ٹوکن کو روک سکتا ہے اور فوری طور پر استعمال کر سکتا ہے۔

Cloudflare، 2025 کے مطابق، غیر محفوظ HTTP کنکشن پر Bearer token کی روک تھام درخواست بھیجنے کے بعد اوسطاً 12 سیکنڈ میں ہوتی ہے۔ HTTPS اور مختصر access token TTL (15–30 منٹ) کا استعمال خطرے کو تقریباً صفر کر دیتا ہے۔ اضافی ایپلیکیشن سطح کا تحفظ — OAuth 2.0 Token Binding (RFC 8471) کے ذریعے درخواست کی اصل کی تصدیق: کلائنٹ ٹوکن سے منسلک TLS کلید کی ملکیت ثابت کرتا ہے، جس سے روک تھام کے ذریعے ٹوکن چوری بے کار ہو جاتی ہے۔

Access Token کی اقسام

Access Token دو فارمیٹس میں موجود ہے: opaque اور JWT (خود کفیل)۔ ان کے درمیان انتخاب تصدیقی نظام کو ڈیزائن کرتے وقت اہم آرکیٹیکچرل فیصلوں میں سے ایک ہے۔

Opaque vs JWT

پیرامیٹرOpaque TokenJWT
فارمیٹبے ترتیب سٹرنگ (32–64 بائٹس)دستخط کے ساتھ Base64 انکوڈڈ JSON
تصدیقintrospection اینڈپوائنٹ کے ذریعے (HTTP درخواست)مقامی (کرپٹوگرافک دستخط)
ڈیٹا پر مشتملنہیں — صرف ایک شناخت کنندہہاں — ٹوکن کے اندر claims
منسوخیفوری — سرور سائیڈ تصدیقبلیک لسٹ یا مختصر TTL کے ذریعے
کارکردگیہر درخواست → introspection (RTT)مقامی تصدیق (RTT کے بغیر)
سائز~100 بائٹس~500–2000 بائٹس

Opaque token ان سسٹمز کے لیے ترجیح دی جاتا ہے جنہیں فوری رسائی منسوخی اور مرکزی حقوق کی تصدیق کی ضرورت ہوتی ہے۔ JWT مائیکرو سروسز آرکیٹیکچر کے لیے ہے جہاں کارکردگی اور نیٹ ورک کالز کو کم سے کم کرنا اہم ہے۔ بہت سے فراہم کنندگان (Auth0، Keycloak) دونوں فارمیٹس کو سپورٹ کرتے ہیں اور ہر کلائنٹ کے لیے ٹوکن کی قسم ترتیب دینے کی اجازت دیتے ہیں۔ Opaque اور JWT کے درمیان انتخاب کنٹرول اور کارکردگی کے درمیان ایک سمجھوتہ ہے: opaque سرور کو مکمل کنٹرول دیتا ہے، JWT کم سے کم تاخیر فراہم کرتا ہے۔

Access Token کا لائف سائیکل

لائف سائیکل access token چار مراحل پر مشتمل ہے: جاری کرنا، منتقلی، استعمال اور میعاد ختم ہونا۔ ہر مرحلے کی اپنی حفاظتی ضروریات اور پروٹوکول کی حدود ہیں۔

میعاد ختم ہونا اور تجدید

Access Token کی محدود عمر ہوتی ہے — عام طور پر 15–60 منٹ۔ expires_in کی قدر ٹوکن جاری کرتے وقت اجازت نامہ سرور کے جواب میں بتائی جاتی ہے۔ اس وقت کے بعد، ٹوکن نا کار ہو جاتا ہے اور کلائنٹ کو refresh token میکانزم کے ذریعے نیا ٹوکن حاصل کرنا ہوتا ہے۔ کلائنٹ دو طریقوں سے میعاد ختم ہونے کی جانچ کر سکتا ہے: JWT میں exp فیلڈ سے (مقامی طور پر) یا HTTP 401 جواب سے (opaque ٹوکن کے لیے)۔

Auth0 Best Practices، 2025 کے مطابق، موبائل ایپلیکیشنز کے لیے بہترین access token TTL 15–30 منٹ ہے۔ بہت چھوٹا TTL (5 منٹ سے کم) ہر تجدید پر ٹوکن اینڈپوائنٹ پر ضرورت سے زیادہ بوجھ ڈالتا ہے — 10,000 صارفین اور 5 منٹ کے TTL کے ساتھ، سرور کو عروج کے اوقات میں فی منٹ 2,000 تجدید کی درخواستیں موصول ہوتی ہیں۔ بہت لمبا TTL (2 گھنٹے سے زیادہ) ٹوکن لیک ہونے پر حملے کی کھڑکی بڑھاتا ہے — حملہ آور رسائی خود بخود مسدود ہونے سے پہلے کئی گھنٹوں تک سمجھوتہ شدہ ٹوکن استعمال کر سکتا ہے۔

Access Token سیکیورٹی

سیکیورٹی access token کی سیکیورٹی تمام مراحل میں یقینی بنائی جانی چاہیے: ڈیوائس پر اسٹوریج کے دوران، نیٹ ورک پر منتقلی کے دوران اور سرور پر پروسیسنگ کے دوران۔ بنیادی سفارش یہ ہے کہ access token کو کبھی بھی ان جگہوں پر ذخیرہ نہ کریں جو دوسری ایپلیکیشنز یا پروسیسز کے لیے قابل رسائی ہوں۔

ذخیرہ اور منتقلی کے دوران تحفظ

موبائل ڈیوائسز پر، access token ذخیرہ کیا جاتا ہے: iOS پر — Keychain میں kSecAttrAccessibleAfterFirstUnlock وصف کے ساتھ (ٹوکن پہلی انلاک کے بعد قابل رسائی ہوتا ہے، چاہے ڈیوائس مقفل ہو — بیک گراؤنڈ اپ ڈیٹس کے لیے)؛ Android پر — EncryptedSharedPreferences میں۔ Access token کو کبھی NSUserDefaults، SharedPreferences، بیرونی اسٹوریج پر فائلوں یا ایپلیکیشن لاگز میں محفوظ نہیں کرنا چاہیے۔ منتقلی کے دوران — صرف HTTPS TLS 1.3 یا 1.2 کے ساتھ۔ ہر API درخواست کے لیے، access token کو Authorization: Bearer ہیڈر میں بھیجا جانا چاہیے، URL پیرامیٹرز (query string) میں نہیں — URLs سرور اور براؤزر لاگز میں محفوظ ہو جاتے ہیں۔

OWASP Mobile Top 10، 2025 کے مطابق، ڈیوائس پر ٹوکن کا نامناسب ذخیرہ (M1: Improper Platform Usage) اور غیر محفوظ ڈیٹا منتقلی (M3: Insecure Communication) اکاؤنٹ کے سمجھوتہ کرنے والی تین سب سے عام موبائل کمزوریوں میں شامل ہیں۔ ایک اضافی اقدام — access token والی تمام درخواستوں کے لیے certificate pinning کا استعمال: کلائنٹ صرف معیاری CA چین کے ذریعے ہی نہیں بلکہ پہلے سے محفوظ کردہ سرٹیفکیٹ فنگر پرنٹ (SHA-256 fingerprint) کے ذریعے بھی سرور کے سرٹیفکیٹ کی تصدیق کرتا ہے۔ یہ سمجھوتہ شدہ CA کے ساتھ بھی مین-ان-دی-مڈل حملوں کو روکتا ہے۔

Kotlin میں کوڈ مثال

ذیل میں Android کے لیے Kotlin میں ایک مثال ہے، جو Authorization ہیڈر میں access token کے ساتھ درخواست بھیجنے اور refresh token کے ذریعے خودکار تجدید کے ساتھ 401 کو ہینڈل کرنے کا مظاہرہ کرتی ہے۔ کسٹم Interceptor کے ساتھ OkHttp استعمال کیا گیا ہے۔

kotlin
data class TokenStore {
    fun getAccessToken(): String? {
        // Reading from EncryptedSharedPreferences
        return encryptPrefs.getString("access_token", null)
    }

    fun isTokenExpired(): Boolean {
        val expiresAt = encryptPrefs.getLong("expires_at", 0)
        return System.currentTimeMillis() > expiresAt
    }
}

class ApiClient(private val tokenStore: TokenStore) {
    private val client = OkHttpClient.Builder()
        .addInterceptor(AuthInterceptor(tokenStore))
        .build()

    fun fetchUserProfile(): UserProfile? {
        val request = Request.Builder()
            .url("https://api.example.com/user/profile")
            .get()
            .build()

        val response = client.newCall(request).execute()
        return if (response.isSuccessful) {
            parseProfile(response.body?.string() ?: return null)
        } else null
    }
}

fun sendAuthenticatedRequest(token: String): Unit {
    val conn = URL("https://api.example.com/data").openConnection() as HttpURLConnection
    conn.setRequestProperty("Authorization", "Bearer $token")
    conn.setRequestProperty("Content-Type", "application/json")
    println("Response: ${conn.responseCode}")
}

مثال دو طریقے دکھاتی ہے: خودکار ٹوکن مینجمنٹ کے لیے OkHttp Interceptor کا استعمال اور HttpURLConnection کے ذریعے براہ راست بھیجنا۔ OkHttp Interceptor کو ترجیح دی جاتی ہے — یہ ٹوکن شامل کرنے اور تجدید کرنے کی منطق کو مرکزی بناتا ہے، ہر درخواست میں کوڈ کی نقل کو ختم کرتا ہے۔ تمام درخواستیں ایک ہی interceptor سے گزرتی ہیں جو جواب کی حالت چیک کرتا ہے اور ڈویلپر کی مداخلت کے بغیر ضرورت پڑنے پر ٹوکن کی تجدید کرتا ہے۔

اکثر پوچھے گئے سوالات

Access token API key سے کیسے مختلف ہے؟

API key ایک جامد ایپلیکیشن شناخت کنندہ ہے جو کسی مخصوص صارف سے منسلک نہیں ہے۔ Access token متحرک، عارضی اور صارف اور سیشن سے منسلک ہے۔ API key scope (اجازت کی پابندی) کو سپورٹ نہیں کرتا، جبکہ access token مختلف کاموں کے لیے مختلف رسائی کی سطحیں رکھ سکتا ہے۔

کیسے پتہ چلے کہ access token کی میعاد ختم ہو گئی ہے؟

دو طریقے: فعال — JWT میں exp فیلڈ کی جانچ (کلائنٹ خود حساب لگاتا ہے کہ ٹوکن ختم ہوا یا نہیں)؛ غیر فعال — درخواست بھیجنا اور HTTP 401 Unauthorized حاصل کرنا۔ دونوں کو یکجا کرنے کی سفارش کی جاتی ہے: ڈیٹا کے نقصان کو روکنے کے لیے پہلے سے exp جانچ، اور فال بیک کے طور پر 401 کو ہینڈل کرنا۔

کیا URL میں access token استعمال کیا جا سکتا ہے؟

نہیں۔ Access token کو کبھی URL query string میں نہیں بھیجنا چاہیے۔ URL پیرامیٹرز براؤزر ہسٹری، سرور لاگز، ریفرر اور پراکسی سرور کیش میں محفوظ ہوتے ہیں۔ واحد محفوظ طریقہ Authorization: Bearer ہیڈر ہے۔ یہ OAuth 2.0 Security Best Practices (RFC 9700) کی ضرورت ہے۔

موبائل ایپ کے لیے access token کی بہترین عمر کیا ہے؟

15–30 منٹ تجویز کیا جاتا ہے۔ خودکار تجدید کے لیے گردش کے ساتھ refresh token استعمال کیا جاتا ہے۔ یہ TTL سیکیورٹی اور صارف کے تجربے میں توازن رکھتا ہے: صارف تجدید کو محسوس نہیں کرتا اور لیک ہونے والے ٹوکن کے لیے حملے کی کھڑکی کم سے کم ہوتی ہے۔ خاص طور پر حساس کارروائیوں (رقم کی منتقلی) کے لیے — 1–5 منٹ۔

Bearer token کیا ہے؟

Bearer token access token کی ایک قسم ہے جہاں ٹوکن پیش کرنے والا کوئی بھی شخص (bearer) رسائی حاصل کرتا ہے۔ ملکیت کا کرپٹوگرافک ثبوت ضروری نہیں ہے — صرف ٹوکن منتقل کرنے کی حقیقت کافی ہے۔ Bearer اسکیما سادہ اور مؤثر ہے، لیکن ٹرانزٹ میں ٹوکن کی روک تھام سے بچانے کے لیے HTTPS کی ضرورت ہے۔

خلاصہ

  • Access Token — محفوظ APIs تک رسائی کے لیے عارضی اسناد
  • Bearer اسکیما — ٹوکن ہر HTTP درخواست کے ساتھ Authorization ہیڈر میں بھیجا جاتا ہے
  • Opaque vs JWT — منسوخی میں آسانی (opaque) اور کارکردگی (JWT) کے درمیان انتخاب
  • مختصر TTL — سمجھوتہ ہونے پر نقصان کم کرنے کے لیے 15–30 منٹ
  • محفوظ ذخیرہ — iOS پر Keychain، Android پر EncryptedSharedPreferences
  • Scope — access token مجاز کارروائی کی حدود میں رسائی کے حقوق کو محدود کرتا ہے
  • HTTPS لازمی — انکرپشن کے بغیر، Bearer token چوری سیکنڈوں میں ممکن ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں