المطوّرون 🔒 يعمل داخل متصفحك — لا تُرسل أي بيانات

فاكّ ترميز JWT

فُكّ ترميز JSON Web Token محليًا وتحقّق من توقيعه بالسرّ أو المفتاح العام، دون إرسال أي شيء.

رمز JWT
السرّ أو المفتاح العام
يُستخدم المفتاح داخل متصفحك ولا يُرسل إلى أي مكان.
بعد فك الترميز
الترويسة

          
        
الحمولة

        
التوقيع

وقّع رمزًا خاصًا بك لاختبار نقطة نهاية. كل شيء يُحسب داخل هذه الصفحة.

مفتاح التوقيع

يبقى المفتاح والرمز الناتج داخل متصفحك: لا يُرسل أي منهما إلى أي مكان، ولا يظهران في رابط المشاركة.

فاكّ ترميز JWT — قراءة محتوى JSON Web Token أونلاين

الصق رمز JSON Web Token فتقسّمه هذه الأداة إلى أجزائه الثلاثة وتعرض الترويسة والحمولة بصيغة JSON مقروءة. إنها أسرع طريقة للإجابة عن الأسئلة التي تظهر أثناء تنقيح المصادقة: من أصدر الرمز، ولمن هو، وبأي خوارزمية وُقّع، وهل انتهت صلاحيته.

يجري فكّ الترميز بالكامل داخل متصفحك. وهذا هنا أهم منه في معظم الأدوات، لأن الـ JWT اعتماد حيّ: من يلتقط رمزًا صالحًا يستطيع عادةً التصرّف باسم صاحبه حتى تنتهي صلاحيته. لا شيء تلصقه في هذه الصفحة يُرفع أو يُسجَّل أو يُخزَّن.

مخطط: رمز JWT مقسوم عند نقطتيه إلى ترويسة وحمولة وتوقيع؛ تتحول الترويسة والحمولة إلى JSON مقروء، والتوقيع HMAC لكليهما.eyJhbGciOiJIUzI1NiIs….eyJzdWIiOiIxMjM0NTY3….2N-E3ZkgLmbR…الترويسةالحمولة (Claims)التوقيع{ "alg": "HS256", "typ": "JWT"}{ "sub": "1234567890", "name": "Ada Lovelace", "iat": 1700000000, "exp": 1700003600}HMACSHA256( header + "." + payload, secret)JSON بترميز Base64URL: يقرؤه أي أحدJSON بترميز Base64URL: يقرؤه أي أحديُتحقَّق منه بالمفتاح السري
رمز JWT هو ثلاث سلاسل Base64URL تفصل بينها نقاط. الترويسة والحمولة JSON عادي يستطيع أي شخص فك ترميزه، لذلك لا يجوز أن يحمل الرمز أسرارًا. التوقيع وحده، بعد التحقق منه بالمفتاح، يُظهر أن الرمز لم يُعدَّل.

ما هو JSON Web Token

الـ JWT ثلاثة مقاطع Base64URL تصلها نقاط: header.payload.signature. تحدّد الترويسة خوارزمية التوقيع، وتحمل الحمولة المطالبات، أي ما يؤكّده المُصدِر عن المستخدم أو العميل، ويثبت التوقيع أن الجزأين الأولين أنتجهما من يملك المفتاح. ولأن الترويسة والحمولة مرمَّزتان فقط وغير مشفّرتين، يستطيع أي شخص قراءتهما. المحميّ هو التوقيع وحده.

طريقة فكّ ترميز JWT هنا

  1. انسخ الرمز من ترويسة Authorization: Bearer أو من كوكي أو من رابط استدعاء أو من عميل الـ API.
  2. الصق السلسلة الكاملة header.payload.signature في حقل الإدخال.
  3. اضغط فك الترميز لعرض كائنَي JSON.
  4. إن رُفض الطلب فافحص 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}) للقراءة، أو مرّر المفتاح للتحقق
Bashecho $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 إلى تواريخ عبر محوّل الطابع الزمني، ونظّف رمزًا مأخوذًا من رابط عبر فاكّ ترميز الروابط.

أدلة ذات صلة