← تمام ٹولز

JWT ڈی کوڈر

اپنے براؤزر میں کسی بھی JSON ویب ٹوکن کو ڈی کوڈ کریں۔ ہیڈر، پے لوڈ اور کلیمز فوراً اور مقامی طور پر پڑھیں۔ ڈی کوڈنگ تصدیق نہیں، اور کچھ باہر نہیں جاتا۔
ہیڈر
پے لوڈ

JWT ڈی کوڈر دراصل کیا کرتا ہے

ایک JSON ویب ٹوکن (JWT) بے ترتیب حروف کی ایک لمبی، غیر شفاف اسٹرنگ کی طرح نظر آتا ہے، مگر یہ نہ تو خفیہ کیا ہوا ہے اور نہ ہی کوئی خفیہ سائفر ہے۔ یہ ایک کمپیکٹ، URL محفوظ کنٹینر ہے جو دو فریقوں کے درمیان منظم ڈیٹا لے کر چلتا ہے۔ اوپر ڈی کوڈر میں کوئی ٹوکن پیسٹ کریں اور یہ اس اسٹرنگ کو الگ الگ کر کے اندر کا اصل JSON دکھا دیتا ہے — میٹا ڈیٹا، دعوے، ٹوکن کس کے لیے ہے، اور یہ کب ختم ہوگا۔ سب کچھ آپ کے براؤزر کے اندر ہی ہوتا ہے۔ ٹوکن کبھی اپلوڈ، لاگ یا کہیں بھیجا نہیں جاتا، اور یہ اُس وقت بہت اہم ہو جاتا ہے جب آپ جس چیز کا معائنہ کر رہے ہوں وہ کوئی زندہ سیشن کریڈینشل ہو۔

ایک JSON ویب ٹوکن تین چمکتے ہوئے Base64url حصوں میں تقسیم ہوتا ہوا: ہیڈر، پے لوڈ اور دستخط
ایک نقطوں والی اسٹرنگ، تین الگ حصے: ہیڈر، پے لوڈ اور دستخط۔

تین حصے، دو نقطے

ہر بخوبی بنا ہوا JWT تین Base64url انکوڈڈ اسٹرنگز ہیں جو نقطوں سے جڑی ہوتی ہیں: header.payload.signature۔ وہی واحد نقطے کا حرف پارسرز کو بتاتا ہے کہ ایک حصہ کہاں ختم ہوتا ہے اور اگلا کہاں شروع، اور یہی وجہ ہے کہ غلط تعداد میں نقطوں والا ٹوکن باقی کچھ بھی پڑھے جانے سے پہلے مسترد کر دیا جاتا ہے۔

ہیڈر ایک چھوٹا JSON آبجیکٹ ہے جو خود ٹوکن کو بیان کرتا ہے۔ اس میں تقریباً ہمیشہ typ (قسم، عام طور پر JWT) اور alg — دستخطی الگورتھم، جیسے HS256 (SHA-256 کے ساتھ HMAC) یا RS256 (SHA-256 کے ساتھ RSA) شامل ہوتا ہے۔ ہیڈر ایک تصدیق کنندہ کو بالکل بتاتا ہے کہ دستخط کیسے تیار کیے گئے تھے۔

پے لوڈ وہ حصہ ہے جس کی زیادہ تر لوگوں کو فکر ہوتی ہے۔ یہ ایک اور JSON آبجیکٹ ہے جس میں دعوے (claims) شامل ہیں — یوزر اور ٹوکن کے بارے میں بیانات۔ وضاحت دعووں کو رجسٹرڈ (معیاری، محفوظ شدہ نام)، عوامی، اور نجی (اپنی ایپ کے لیے آپ کے تیار کردہ حسبِ ضرورت نام) میں تقسیم کرتی ہے۔ پے لوڈ کو ڈی کوڈ کرنا یہی ظاہر کرتا ہے کہ کون لاگ اِن ہے، ان کا کردار کیا ہے، اور ان کا سیشن کب ختم ہوگا۔

دستخط خفیہ نگاری کی مہر ہے۔ اسے ہیڈر میں دیے گئے الگورتھم اور ایک راز یا نجی کی کا استعمال کرتے ہوئے انکوڈڈ ہیڈر اور پے لوڈ پر حساب لگایا جاتا ہے۔ چونکہ یہ دونوں دیگر حصوں کا احاطہ کرتا ہے، ہیڈر یا پے لوڈ میں کوئی بھی تبدیلی — ایک واحد حرف بھی — اسے غلط قرار دے دیتی ہے۔

وہ دعوے جو آپ کو سب سے زیادہ نظر آئیں گے

رجسٹرڈ دعوے مختصر، تین حرفی نام ہیں جو RFC 7519 نے متعین کیے ہیں تاکہ مختلف نظام آپس میں مطابقت رکھ سکیں۔ چند ایک تقریباً ہر جگہ نظر آتے ہیں:

  • ississuer: کس نے ٹوکن تیار کیا (آپ کا آتھ سرور یا شناختی فراہم کنندہ)۔
  • subsubject: وہ اصل شخص جس کے بارے میں ٹوکن ہے، عام طور پر ایک مستحکم یوزر ID۔
  • audaudience: وہ وصول کنندہ جس کے لیے ٹوکن مقصود ہے۔ ایک API کو ایسے ٹوکنز مسترد کر دینے چاہئیں جن کا سامعین وہ خود نہ ہو۔
  • expexpiration time: ایک یونکس ٹائم اسٹیمپ جس کے بعد ٹوکن قبول نہیں کیا جانا چاہیے۔
  • iatissued at: یونکس ٹائم اسٹیمپ جب ٹوکن تیار کیا گیا تھا۔

آپ کو nbf (اس سے پہلے نہیں) اور jti (ایک منفرد ٹوکن ID) بھی مل سکتے ہیں۔ ٹائم اسٹیمپس UTC میں 1970 سے سیکنڈز ہیں، اور یہی وجہ ہے کہ ایک ڈی کوڈر جو انہیں پڑھنے کے قابل تاریخوں کے طور پر دکھاتا ہے آپ کو یہ چیک کرنے کی ذہنی حساب کتاب سے بچا لیتا ہے کہ ٹوکن پہلے ہی ختم ہو چکا ہے یا نہیں۔

ڈی کوڈنگ تصدیق نہیں ہے — یہی وہ حصہ ہے جو لوگوں کو چونکا دیتا ہے

یہی فرق JWTs کے بارے میں سمجھنے کے لیے سب سے اہم بات ہے۔ ڈی کوڈنگ کا مطلب ہے مواد پڑھنا: اسے کسی کی کی ضرورت نہیں اور جس کے پاس بھی ٹوکن ہو وہ یہ کر سکتا ہے، کیونکہ Base64url ایک انکوڈنگ ہے، خفیہ نگاری نہیں۔ تصدیق کا مطلب ہے یہ ثابت کرنا کہ ٹوکن اصلی اور بغیر چھیڑ چھاڑ کے ہے — صحیح راز یا عوامی کی کے ساتھ دستخط دوبارہ حساب لگانا اور یہ تصدیق کرنا کہ یہ مماثل ہے۔

یہ ٹول ڈی کوڈ کرتا ہے۔ یہ آپ کو دکھاتا ہے کہ ٹوکن کیا کہتا ہے، نہ کہ ٹوکن قابلِ اعتماد ہے یا نہیں۔ ایک ٹوکن جعلی، ختم شدہ، یا دوبارہ چلایا گیا ہو سکتا ہے اور پھر بھی بالکل صاف نظر آنے والے JSON میں ڈی کوڈ ہو سکتا ہے۔ کبھی بھی صرف ڈی کوڈ شدہ دعووں کی بنیاد پر اجازت کا فیصلہ نہ کریں۔ پروڈکشن میں آپ سرور سائیڈ پر دستخط کی تصدیق کرتے ہیں، exp چیک کرتے ہیں، اور یہ تصدیق کرتے ہیں کہ iss اور aud آپ کی توقع سے مماثل ہیں — ایک جانچی پرکھی لائبریری استعمال کرتے ہوئے، کبھی ہاتھ سے بنائے گئے اسٹرنگ موازنے سے نہیں۔

ایک چمکتا ہوا ٹوکن کھلتا اور معائنہ ہوتا ہوا، ایک سنہری دستخطی مہر کے ساتھ جو صداقت ثابت کرتی ہے
کوئی بھی ٹوکن پڑھ سکتا ہے۔ صرف کی رکھنے والا ہی ثابت کر سکتا ہے کہ یہ اصلی ہے۔

پے لوڈ کوئی تجوری نہیں ہے

چونکہ پے لوڈ صرف Base64url انکوڈڈ ہے، یہ کسی بھی ایسے شخص کے لیے پڑھنے کے قابل ہے جو ٹوکن کو روک لے۔ اس میں موجود ہر چیز کو عوامی سمجھیں۔ JWT دعووں میں پاس ورڈز، مکمل کریڈٹ کارڈ نمبرز، خفیہ کیز، یا کوئی بھی حساس ذاتی ڈیٹا نہ رکھیں — اگر آپ اسے یہاں ایک کلک میں ڈی کوڈ کر سکتے ہیں، تو کوئی اور بھی جسے اس کی کاپی ملے وہ بھی کر سکتا ہے۔ دستخط تبدیلی سے تحفظ دیتا ہے، کبھی پڑھنے سے نہیں۔ اگر آپ کو حقیقتاً پے لوڈ کے مواد کو چھپانا ہو، تو یہ JWE (خفیہ کردہ ٹوکنز) کا کام ہے، جو مکمل طور پر ایک الگ وضاحت ہے۔

رازداری اور متعلقہ ٹولز

ٹوکن کا معائنہ کرنا ایک حساس عمل ہے، اس لیے یہ ڈی کوڈر مکمل طور پر کلائنٹ سائیڈ چلتا ہے — پارسنگ آپ کے ٹیب میں سادہ JavaScript ہے اور کچھ بھی آپ کی مشین سے باہر نہیں جاتا۔ کسی سیشن ٹوکن کو سرور پر مبنی ٹول میں پیسٹ کرنا ایک زندہ کریڈینشل کسی تیسرے فریق کے حوالے کرنے کے مترادف ہے، جو بالکل وہ چیز ہے جس سے آپ کو بچنا چاہیے۔ اس سب کے پیچھے موجود انکوڈنگ کے لیے، ہمارا Base64 ٹول دیکھیں، اور مزید آن ڈیوائس یوٹیلیٹیز کے لیے ہمارے باقی ڈویلپر ٹولز دیکھیں۔

اکثر پوچھے جانے والے سوالات

کیا JWT خفیہ کیا ہوا ہوتا ہے؟

نہیں۔ ایک معیاری JWT Base64url انکوڈڈ ہے، خفیہ نہیں۔ ٹوکن رکھنے والا کوئی بھی ہیڈر اور پے لوڈ پڑھ سکتا ہے۔ اگر آپ کو مواد چھپانا ہو تو JWE استعمال کریں۔

کیا یہ ٹول دستخط کی تصدیق کرتا ہے؟

نہیں۔ یہ صرف ہیڈر اور پے لوڈ کو ڈی کوڈ اور ڈسپلے کرتا ہے۔ دستخط کی تصدیق کے لیے جاری کنندہ کے راز یا عوامی کی کی ضرورت ہوتی ہے اور یہ آپ کے سرور پر کیا جانا چاہیے۔

کیا میرا ٹوکن یہاں پیسٹ کرنا محفوظ ہے؟

جی ہاں۔ ڈی کوڈنگ مکمل طور پر آپ کے براؤزر میں مقامی JavaScript استعمال کرتے ہوئے ہوتی ہے۔ ٹوکن کبھی اپلوڈ، محفوظ، یا کسی سرور کو نہیں بھیجا جاتا۔

iss, sub, aud, exp اور iat کا کیا مطلب ہے؟

یہ رجسٹرڈ دعوے ہیں: جاری کنندہ، موضوع، سامعین، ختم ہونے کا وقت اور جاری ہونے کا وقت۔ وقت سے متعلق تینوں سیکنڈز میں یونکس ٹائم اسٹیمپس استعمال کرتے ہیں۔

کیا میں ڈی کوڈنگ کے بعد دکھائے گئے دعووں پر بھروسہ کر سکتا ہوں؟

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

میرے ٹوکن میں نقطوں سے الگ ہونے والے تین حصے کیوں ہیں؟

یہ ہیڈر، پے لوڈ اور دستخط ہیں، ہر ایک Base64url انکوڈڈ اور نقطوں سے جڑا ہوا۔ نقطے پارسرز کو بتاتے ہیں کہ ہر حصہ کہاں شروع اور ختم ہوتا ہے۔