UltKit

JWT ڈیکوڈر

JSON Web Token پیسٹ کریں اور اس کا ہیڈر اور پے لوڈ فارمیٹ شدہ JSON کی صورت میں پڑھیں؛ میعاد ختم ہونے اور جاری ہونے کے اوقات تاریخوں کی شکل میں دکھائے جاتے ہیں، ساتھ یہ نوٹ بھی کہ ٹوکن اس وقت درست ہے یا نہیں۔ ڈیکوڈنگ مکمل طور پر آپ کے براؤزر میں ہوتی ہے، جو اس وقت اہم ہے جب ٹوکن ایک فعال اسناد (credential) ہو۔

0 حروف · 0 الفاظ · 0 سطریں

0 حروف · 0 الفاظ · 0 سطریں

یہ مکمل طور پر اسی براؤزر ٹیب میں چلتا ہے۔ آپ کا متن کبھی اپ لوڈ یا محفوظ نہیں کیا جاتا۔

رجسٹرڈ کلیمز

RFC 7519 §4.1 میں طے کردہ سات کلیم نام۔ سب اختیاری ہیں؛ اوقات 1970-01-01 UTC سے سیکنڈز میں ہیں۔

کلیممطلب
issجاری کنندہ: ٹوکن کس نے بنایا اور دستخط کیا
subموضوع: وہ صارف یا ادارہ جس کے بارے میں ٹوکن ہے
audناظرین: ٹوکن کس کے لیے ہے
expمیعاد ختم ہونے کا وقت: اس لمحے کے بعد ٹوکن مسترد کریں
nbfاس سے پہلے نہیں: اس لمحے سے پہلے ٹوکن مسترد کریں
iatاجرا کا وقت: ٹوکن کب بنایا گیا
jtiJWT ID: منفرد شناخت، ری پلے روکنے کے لیے

عام alg ویلیوز

alg ویلیومطلب
HS256SHA-256 کے ساتھ HMAC؛ ایک مشترکہ راز دستخط بھی کرتا ہے اور تصدیق بھی
RS256SHA-256 کے ساتھ RSA PKCS#1 v1.5 دستخط؛ نجی کلید دستخط کرتی ہے، عوامی کلید تصدیق
PS256SHA-256 کے ساتھ RSA-PSS
ES256P-256 کرو پر SHA-256 کے ساتھ ECDSA؛ مختصر دستخط
EdDSAEd25519 یا Ed448 دستخط
noneبغیر دستخط کا ٹوکن؛ سرورز کو اسے مسترد کرنا چاہیے

JSON Web Token کے اندر کیا ہوتا ہے

JWT کی تعریف RFC 7519 (مئی 2015) میں کی گئی ہے، جس کے مطابق اسے انگریزی لفظ "jot" کی طرح پڑھا جاتا ہے۔ عام دستخط شدہ شکل تین Base64url سٹرنگز پر مشتمل ہوتی ہے جو نقطوں سے جڑی ہوتی ہیں: header.payload.signature۔ ہیڈر میں alg کے ذریعے دستخطی الگورتھم کا نام ہوتا ہے، جیسے HS256 یا RS256، اور اکثر kid میں کی آئی ڈی بھی ہوتی ہے۔ پے لوڈ میں کلیمز ہوتے ہیں، یعنی JSON فیلڈز جیسے sub (صارف)، iss (جاری کرنے والا)، aud (مطلوبہ مخاطب) اور exp، nbf اور iat، جو 1 جنوری 1970 UTC سے سیکنڈوں میں وقت ظاہر کرتے ہیں۔ ڈیکوڈر ان تینوں کو آپ کے مقامی وقت اور ISO 8601 میں بدلتا ہے، اور بتاتا ہے کہ ٹوکن کی میعاد ختم ہو چکی ہے، ابھی درست نہیں ہوا، یا اپنی مدت کے اندر ہے۔

Base64url ایک انکوڈنگ ہے، انکرپشن نہیں، اس لیے ٹوکن رکھنے والا کوئی بھی شخص اس کا پے لوڈ بالکل اسی طرح پڑھ سکتا ہے جیسے یہ صفحہ پڑھتا ہے۔ کلیمز میں کبھی پاس ورڈ، کارڈ نمبر یا دیگر خفیہ معلومات نہ رکھیں۔ پانچ نقطوں سے الگ حصوں والا ٹوکن JWE ہوتا ہے، یعنی انکرپٹڈ ٹوکن؛ اس کا مواد کلید کے بغیر نہیں پڑھا جا سکتا، اور ڈیکوڈر یہی بتاتا ہے۔ Authorization ہیڈر سے کاپی کیا گیا ابتدائی "Bearer " خود بخود ہٹا دیا جاتا ہے۔

یہاں دستخط کی تصدیق کیوں نہیں کی جاتی

دستخط یہ ثابت کرتا ہے کہ ہیڈر اور پے لوڈ کسی ایسے شخص نے بنائے جس کے پاس کلید تھی اور بعد میں ان میں تبدیلی نہیں ہوئی۔ اسے جانچنے کے لیے وہ کلید درکار ہے: HS256 جیسے HMAC الگورتھم کے لیے مشترکہ خفیہ کلید، یا RS256، ES256 یا EdDSA کے لیے جاری کنندہ کی پبلک کلید۔ پروڈکشن کی دستخطی خفیہ کلید کسی بھی ویب صفحے پر چسپاں کرنا اچھا خیال نہیں، اور کلید کے بغیر ٹوکن کی ضمانت کا دعویٰ کرنے والا ڈیکوڈر جھوٹا اطمینان دے گا، اس لیے یہ ٹول دستخط دکھاتا ہے مگر اس کی تصدیق نہیں کرتا۔ جو کچھ نظر آئے اسے ٹوکن کا دعویٰ سمجھیں، حقیقت نہیں۔

تصدیق آپ کے سرور پر ہونی چاہیے، ایسی لائبریری کے ساتھ جس کی دیکھ بھال ہو رہی ہو اور متوقع الگورتھم پہلے سے طے ہو۔ دو پرانی غلطیاں اس کی وجہ بتاتی ہیں: alg "none" قبول کرنا، جس سے کوئی بھی بغیر دستخط کا جعلی ٹوکن بنا سکتا ہے، اور الگورتھم کنفیوژن، جس میں RS256 کی توقع رکھنے والے سرور کو دھوکا دے کر HS256 دستخط کی جانچ پبلک کلید کو HMAC سیکرٹ بنا کر کروائی جاتی ہے۔ ڈیکوڈر ڈیبگنگ کے لیے ہے: یہ دیکھنے کے لیے کہ فراہم کنندہ کون سے کلیمز جاری کرتا ہے، غلط aud پکڑنے کے لیے، یا یہ معلوم کرنے کے لیے کہ سیشن اس لیے ناکام ہوا کہ exp ایک منٹ پہلے گزر گیا۔ Base64url حصوں کو خام صورت میں پڑھنے کے لیے Base64 ڈیکوڈر استعمال کریں۔

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

کیا JWT ڈیکوڈر میں اصل ایکسیس ٹوکن پیسٹ کرنا محفوظ ہے؟
اس صفحے پر ٹوکن آپ کے براؤزر سے باہر نہیں جاتا۔ پھر بھی درست ٹوکن میعاد ختم ہونے تک پاس ورڈ کی طرح کام کرتا ہے، اس لیے ختم شدہ یا ٹیسٹ ٹوکن استعمال کریں اور فعال ٹوکن اسکرین شاٹس اور چیٹس میں نہ آنے دیں۔
میرا ٹوکن ابھی جاری ہوا ہے، پھر بھی میعاد ختم کیوں دکھا رہا ہے؟
پہلے اپنے آلے کی گھڑی دیکھیں۔ کچھ جاری کنندگان ایکسیس ٹوکن کی عمر صرف چند منٹ رکھتے ہیں، اور لاگ سے کاپی کیا گیا ٹوکن نظر آنے سے زیادہ پرانا ہو سکتا ہے۔ سیکنڈ کے بجائے ملی سیکنڈ میں لکھا گیا exp اس کے برعکس کرتا ہے اور ہزاروں سال آگے چلا جاتا ہے۔
کیا کوئی میرے JWT کا پے لوڈ تبدیل کر سکتا ہے؟
وہ اسے ایڈٹ کر کے دوبارہ انکوڈ کر سکتے ہیں، مگر دستخط میل نہیں کھائے گا۔ جو سرور درست کلید اور الگورتھم سے دستخط جانچتا ہے وہ بدلا ہوا ٹوکن مسترد کر دیتا ہے۔
JWS اور JWE میں کیا فرق ہے؟
JWS (RFC 7515) پر دستخط ہوتے ہیں، اس کے تین حصے ہوتے ہیں اور اسے کوئی بھی پڑھ سکتا ہے۔ JWE (RFC 7516) انکرپٹڈ ہوتا ہے، اس کے پانچ حصے ہوتے ہیں اور پے لوڈ صرف کلید رکھنے والا پڑھ سکتا ہے۔
کیا لاگ آؤٹ کرنے سے JWT ناکارہ ہو جاتا ہے؟
خود بخود نہیں۔ دستخط شدہ JWT exp تک درست رہتا ہے جب تک سرور ڈینائی لسٹ نہ رکھے یا سیشن ریکارڈ نہ جانچے، اسی لیے ایکسیس ٹوکن کی عمر عموماً مختصر رکھی جاتی ہے۔