فاكّ ترميز JWT
فُكّ ترميز JSON Web Token محليًا وتحقّق من توقيعه بالسرّ أو المفتاح العام، دون إرسال أي شيء.
وقّع رمزًا خاصًا بك لاختبار نقطة نهاية. كل شيء يُحسب داخل هذه الصفحة.
يبقى المفتاح والرمز الناتج داخل متصفحك: لا يُرسل أي منهما إلى أي مكان، ولا يظهران في رابط المشاركة.
تحقّق من هذا الرمز داخل الكود الخاص بك. يتبع المقتطف الخوارزمية المذكورة في الترويسة.
فاكّ ترميز JWT — قراءة محتوى JSON Web Token أونلاين
الصق رمز JSON Web Token فتقسّمه هذه الأداة إلى أجزائه الثلاثة وتعرض الترويسة والحمولة بصيغة JSON مقروءة. إنها أسرع طريقة للإجابة عن الأسئلة التي تظهر أثناء تنقيح المصادقة: من أصدر الرمز، ولمن هو، وبأي خوارزمية وُقّع، وهل انتهت صلاحيته.
يجري فكّ الترميز بالكامل داخل متصفحك. وهذا هنا أهم منه في معظم الأدوات، لأن الـ JWT اعتماد حيّ: من يلتقط رمزًا صالحًا يستطيع عادةً التصرّف باسم صاحبه حتى تنتهي صلاحيته. لا شيء تلصقه في هذه الصفحة يُرفع أو يُسجَّل أو يُخزَّن.
ما هو JSON Web Token
الـ JWT ثلاثة مقاطع Base64URL تصلها نقاط: header.payload.signature. تحدّد الترويسة خوارزمية التوقيع، وتحمل الحمولة المطالبات، أي ما يؤكّده المُصدِر عن المستخدم أو العميل، ويثبت التوقيع أن الجزأين الأولين أنتجهما من يملك المفتاح. ولأن الترويسة والحمولة مرمَّزتان فقط وغير مشفّرتين، يستطيع أي شخص قراءتهما. المحميّ هو التوقيع وحده.
طريقة فكّ ترميز JWT هنا
- انسخ الرمز من ترويسة
Authorization: Bearerأو من كوكي أو من رابط استدعاء أو من عميل الـ API. - الصق السلسلة الكاملة
header.payload.signatureفي حقل الإدخال. - اضغط فك الترميز لعرض كائنَي JSON.
- إن رُفض الطلب فافحص
expأولًا ثمaudوiss.
ماذا تفعل هذه الصفحة أيضًا
يُقرأ الرمز أثناء الكتابة، فتمتلئ اللوحات قبل أن تمدّ يدك إلى الزر. وتحت الترويسة والحمولة بعد فك الترميز يظهر كل حقل في جدول مع شرح موجز لوظيفته، ويحوّل سطر فوقها exp وnbf إلى جمل: انتهى قبل ثلاثة أيام، ينتهي خلال ثمانٍ وخمسين دقيقة، ليس صالحًا بعد.
- نموذج يحمّل رمزًا تجريبيًا مع سرّه، لترى تحقّقًا ناجحًا قبل أن تلصق شيئًا يخصّك.
- يقبل تحقّق من التوقيع السرّ أو مفتاحًا عامًا بصيغة PEM أو JWK منفردًا أو JWKS كاملًا. الصق المستند الذي يعيده عنوان
/.well-known/jwks.jsonلدى المُصدِر، فيُختار تلقائيًا المفتاح الذي يسمّيهkidفي الرمز، وتبقى الصفحة بلا أي طلب من جهتها. وإن ملأت أيضًا المُصدِر المتوقَّع والجمهور المتوقَّع، يُفحص التوقيع الصالح كما يفحصه الخادم: أيissمختلف، أوaudلا يتضمن قيمتك، يجعل النتيجة حمراء. - إنشاء رمز يوقّع رمزًا خاصًا بك بأي من الخوارزميات الاثنتي عشرة — وصفحة مولّد JWT تفتح عليه مباشرة.
- كود يطبع تحقّق جانب الخادم بثماني لغات، متبعًا الخوارزمية المذكورة في ترويسة رمزك.
- وصفحتان أخريان تفتحان هذه الأداة على سؤال واحد: هل انتهت صلاحيته ولماذا يُرفض.
المطالبات القياسية ومعانيها
| المطالبة | المعنى | سبب الفشل الشائع |
|---|---|---|
iss | المُصدِر: من أنشأ الرمز | لا تتطابق حين يُرسَل رمز بيئة الاختبار إلى الإنتاج |
sub | الموضوع: عادةً معرّف المستخدم أو الخدمة | فارغة في الرموز الصادرة لعميل لا لشخص |
aud | الجمهور: الـ API المفترض أن يقبله | أكثر أسباب الخطأ 401 شيوعًا مع رمز يبدو صالحًا |
exp | انتهاء الصلاحية كطابع زمني يونكس | مضى وقتها، أو ساعة الخادم منحرفة |
nbf | غير صالح قبل هذا الوقت | استُخدم الرمز قبل موعده بثوانٍ |
iat | وقت الإصدار | أساس سياسات العمر الأقصى ونوافذ الإبطال |
jti | معرّف فريد للرمز | لازم لحظر رمز بعينه |
فكّ الترميز ليس تحققًا
هذه النقطة هي أكثر ما يوقع الناس في الخطأ. قراءة الرمز تخبرك بما يدّعيه، لا بما إذا كان الادعاء صحيحًا. التحقق يعني إعادة حساب التوقيع بسرّ المُصدِر أو مفتاحه العام ثم المقارنة، إضافة إلى فحص الصلاحية والجمهور. وأي فاكّ ترميز سيعرض حمولة رمز مزوَّر بالسهولة نفسها التي يعرض بها رمزًا حقيقيًا، لذا لا تبنِ قرار تفويض على المحتوى المفكوك وحده، وتحقّق دائمًا على الخادم بمكتبة مُصانة.
تشخيص رمز لا يعمل
- خطأ 401 مع رمز صالح: قارن
audبما يتوقعه الـ API وissبرابط المُصدِر المضبوط. اكتب القيمتين في المُصدِر المتوقَّع والجمهور المتوقَّع واضغط تحقّق من التوقيع: تذكر النتيجة القيمة التي يحملها الرمز فعلًا. - انتهاء فوري: حوّل
expعبر محوّل الطابع الزمني وقارنه بساعة الخادم لا بساعة جهازك. - خطأ مقطع غير صالح: بُتر الرمز أو رُمِّز كرابط في الطريق أو تسلّل سطر جديد أثناء النسخ.
- فشل التحقق من التوقيع: بُدِّل المفتاح أو استُخدم معرّف مفتاح خاطئ أو وُقّع الرمز في بيئة أخرى.
- قيمة
algهيnone: ارفضه. تعني أن الرمز بلا توقيع، وهي هجمة كلاسيكية على التحقق المتساهل.
عادات أمنية تستحق الالتزام
- لا تضع بيانات شخصية أو معرّفات داخلية أو أي شيء سرّي في الحمولة: فهي مقروءة بحكم التصميم.
- أبقِ رموز الوصول قصيرة العمر واستخدم رمز تحديث للجلسات الطويلة.
- انقل الرموز عبر HTTPS فقط، وفضّل الكوكيز بخاصيتَي secure وHttpOnly على تخزين المتصفح حيثما أمكن.
- بدّل مفاتيح التوقيع وفق جدول وانشرها عبر نقطة JWKS ليتابعها العملاء.
- اعتبر أي رمز لصقته في أداة أونلاين مكشوفًا — ولهذا السبب بالذات لا ترسله هذه الأداة إلى أي مكان.
يعمل دون اتصال داخل متصفحك
فاكّ الترميز مجرد JavaScript على جهة العميل. بعد تحميل الصفحة يمكنك فكّ الرموز بلا أي اتصال بالشبكة، ولا تغادر اعتمادات الإنتاج جهازك أبدًا.
فك ترميز JWT في الكود أو من سطر الأوامر
| أين | كيف |
|---|---|
| JavaScript (npm) | import { jwtDecode } from 'jwt-decode'; jwtDecode(token) - الحمولة فقط دون تحقق |
| Python (PyJWT) | jwt.decode(token, options={'verify_signature': False}) للقراءة، أو مرّر المفتاح للتحقق |
| Bash | echo $TOKEN | cut -d. -f2 | tr '_-' '/+' | base64 -d 2>/dev/null - يحذف Base64URL الحشو، فقد تحتاج الحمولة القصيرة إلى == في نهايتها |
| وحدة تحكم المتصفح | JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))) |
كل هذه الطرق تقرأ التوكن دون التحقق من التوقيع، وهذا مناسب لتصحيح الأخطاء وخاطئ لقرارات التخويل - راجع القسم أعلاه.
أدوات ذات صلة
الرموز تقع في تقاطع عدة صيغ. اقرأ المقاطع الخام عبر فاكّ ترميز Base64، ورتّب الحمولة عبر منسّق JSON، وحوّل exp وiat إلى تواريخ عبر محوّل الطابع الزمني، ونظّف رمزًا مأخوذًا من رابط عبر فاكّ ترميز الروابط.