§

اپنا JWT پیسٹ کریں

پارسنگ اور دستخط کی تصدیق دونوں مقامی طور پر چلتی ہیں۔ ٹوکن کے بارے میں کچھ بھی کسی سرور کو نہیں بھیجا جاتا۔
§

ہیڈر

json
§

پے لوڈ

json
§

دستخط کی تصدیق کریں

دستخط کی تصدیق کے لیے ایک سیکریٹ درج کریں۔

Pakistan کے identity اور fintech انجینئرز روزانہ JWTs decode کرتے ہیں۔ JazzCash اور SadaPay کے OAuth flows، NADRA کی Verisys APIs کے session tokens، اور 10pearls کی Auth0 پر بنی apps کے access tokens سب JWT کی شکل میں آتے ہیں۔ AWS Cognito، Okta اور Keycloak کے deployments جو Daraz اور Careem Pakistan چلاتے ہیں، Stripe-جیسے gateway integrations، اور SBP کی RAAST کے cross-bank messaging headers بھی signed JWTs پر مبنی ہیں۔ FBR کے IRIS portal کے session میں iat، exp اور aud claims کی جانچ سیکیورٹی audit کا حصہ بنتی ہے۔ یہ ٹول header، payload اور signature کو local browser میں decode کرتا ہے — کوئی token کسی تیسرے فریق کو نہیں جاتا۔

JSON Web Token کیا ہے؟

ایک JSON Web Token (JWT) ایک کمپیکٹ، URL-محفوظ لفافہ ہے جو ایک چھوٹے کلیمز پے لوڈ کو لے کر چلتا ہے۔ یہ سٹیٹ لیس ویب سیشنز، OAuth/OIDC ID ٹوکنز، مشین-سے-مشین API توثیق، اور دستخط شدہ میجک لنکس کے لیے معیاری اسناد فارمیٹ ہے۔ ایک JWT ہمیشہ تین base64url سیگمنٹس پر مشتمل ہوتا ہے جو نقطوں سے جوڑے گئے ہوں: header.payload.signature۔ ہیڈر اور پے لوڈ JSON ہوتے ہیں؛ دستخط پہلے دو سیگمنٹس پر ایک بائنری MAC یا ڈیجیٹل دستخط ہوتا ہے۔

JWTs کیسے کام کرتے ہیں؟

جب یہ ٹول کسی ٹوکن کو ڈی کوڈ کرتا ہے تو وہ وہی تین-قدمی راستہ اختیار کرتا ہے جو ہر JWT لائبریری اپناتی ہے:

  1. ٹوکن کو نقطوں پر بالکل تین غیر-خالی سیگمنٹس میں تقسیم کریں۔ کوئی بھی دوسری شکل بد ساخت ہے۔
  2. سیگمنٹ 0 اور 1 کو Base64url-ڈی کوڈ کریں، پھر ہر ایک پر JSON.parse چلائیں۔ ہیڈر الگورتھم (alg) اور ٹوکن کی قسم (typ) لے کر چلتا ہے۔ پے لوڈ کلیمز (sub، exp، iat، اور حسبِ ضرورت کیز) لے کر چلتا ہے۔
  3. اگر سیکریٹ فراہم کیا جائے تو ہیڈر میں موجود الگورتھم کا استعمال کرتے ہوئے <segment0>.<segment1> پر MAC دوبارہ شمار کریں۔ بائٹس کا تیسرے سیگمنٹ کے ساتھ موازنہ کریں۔
  4. تصدیق کے نتیجے کو ڈی کوڈ شدہ کلیمز کے ساتھ سامنے لائیں، جس میں exp کلیم سے شمار کیا گیا انسان-پڑھنے کے قابل میعاد ختم ہونے کا اشارہ بھی شامل ہے۔

براؤزر میں JWTs کو کیوں ڈیکوڈ کریں؟

کسی حقیقی، زیرِ استعمال JWT کو ریموٹ ڈیبگر میں پیسٹ کرنا اُن اسناد کو اُس سروس کے لاگز، آبزرویبلٹی اسٹیک، اور کسی بھی پارٹنر کو لیک کر دیتا ہے جس کے ساتھ سروس ڈیٹا شیئر کرتی ہے۔ چاہے تھرڈ پارٹی سائٹ یہ دعویٰ بھی کرے کہ وہ ٹوکنز لاگ نہیں کرتی، آپ کے پاس اِس کی تصدیق کا کوئی ذریعہ نہیں ہے۔ یہ ٹول اسی لیے بنایا گیا کہ آپ کو کبھی یہ سمجھوتہ نہ کرنا پڑے:

  • صفر نیٹ ورک: رن ٹائم میں کوئی fetch، XMLHttpRequest یا sendBeacon کال نہیں ہے۔ ڈی کوڈ اور تصدیق کے دوران DevTools کھولیں — نیٹ ورک پینل خاموش رہے گا۔
  • نیٹِو Web Crypto: HMAC تصدیق crypto.subtle.importKey اور crypto.subtle.sign استعمال کرتی ہے، یعنی وہی پرائمیٹوز جنہیں آپ کا رن ٹائم خود بھی بلاتا ہے۔
  • سٹیٹک ڈیپلائے: ہر صفحہ ایک واحد سٹیٹک HTML فائل ہے جس کا کوئی سرور اینڈ پوائنٹ سمجھوتے کے لیے موجود نہیں۔ کوئی ٹوکن لیک ہونے کا امکان نہیں کیونکہ لیک ہونے کے لیے کوئی سرور ہی نہیں ہے۔

یہ ٹول کیا ویریفائی کرتا ہے اور کیا نہیں؟

اس ٹول کا ورژن 1 صرف HMAC-SHA خاندان کے دستخطوں کی تصدیق کرتا ہے۔ تفصیل سے:

  • سپورٹ شدہ: HS256، HS384، HS512۔ مشترکہ سیکریٹ فراہم کریں اور ٹول MAC کو دوبارہ شمار کر کے موازنہ کر دے گا۔
  • ابھی سپورٹ شدہ نہیں: RS256/384/512 (RSA)، ES256/384/512 (ECDSA)، EdDSA، اور PS256/384/512 (RSA-PSS)۔ یہ PEM یا JWK شکل میں پبلک کی درکار ہوتی ہیں اور انہیں جان بوجھ کر آئندہ ریلیز کے لیے موخر کر دیا گیا ہے۔
  • مسترد: alg: "none"۔ ٹول ٹوکن کو ڈی کوڈ تو کرتا ہے مگر اسے واضح طور پر غیر محفوظ قرار دیتا ہے — کوئی دستخط کی توثیق نہیں ہو رہی، اور کوئی بھی پروڈکشن سسٹم جو ایسا ٹوکن قبول کرے ایک سنگین کمزوری کا شکار ہے۔

JWT ڈیکوڈنگ کی مثال کیسی دکھتی ہے؟

اوپر دیے گئے ان پٹ فیلڈ میں RFC 7519 کا کلاسیکی مثالی ٹوکن پیسٹ کریں:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

ہیڈر ڈی کوڈ ہو کر {"alg":"HS256","typ":"JWT"} بنتا ہے اور پے لوڈ {"sub":"1234567890","name":"John Doe","iat":1516239022} بنتا ہے۔ تصدیق پینل میں your-256-bit-secret درج کریں اور دستخط کا چیک درست واپس کرے گا۔ سیکریٹ کا کوئی ایک حرف بدل دیں اور یہ غلط واپس کرے گا۔ یہ سب کچھ آپ کے براؤزر سے باہر نہیں جاتا۔

یہ وہی JWT ڈی کوڈر ہے جس کی ہمیں خواہش تھی جب ہمیں پروڈکشن میں کسی ٹوکن کو ڈیبگ کرنا تھا: رازداری کا احترام کرنے والا، تیز، اور اُنہی پرائمیٹوز پر بنایا گیا جنہیں رن ٹائم خود استعمال کرتا ہے۔