Utilia

فك ترميز JWT

فك ترميز JWT واقرأ الترويسة والحمولة وتواريخ exp وiat وnbf، وتحقّق من توقيعات HS256 وRS256 وES256 وEdDSA محليًا في متصفحك.

الرموز المميزة بيانات اعتماد. تفكّ هذه الأداة ترميزها وتتحقق منها في متصفحك ولا ترسلها إلى أي مكان.

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

HS256/384/512: أدخل السر المشترك. RS وPS وES ‏(256/384/512) وEdDSA: الصق المفتاح العام بصيغة PEM (مفتاح عام أو مفتاح RSA عام أو شهادة) أو JWK (تُطابَق مجموعة JWK Set حسب kid).

كيف تفك ترميز رمز JWT

  1. الصق الرمز في حقل رمز JWT ‏(JSON Web Token). تقبل الأداة أيضًا قيمة Authorization: Bearer … كاملة، إذ تحذف البادئة Bearer وأي فواصل أسطر تلقائيًا.
  2. يُفك ترميز الرمز أثناء الكتابة (أو انقر فك الترميز). تظهر الترويسة (Header) والحمولة (Payload) بصيغة JSON منسّقة، ولكل منهما زر نسخ خاص بها.
  3. اقرأ جدول المطالبات الزمنية: تُعرض exp وnbf وiat بقيمتها الخام، وبالتاريخ في منطقتك الزمنية، وبوقت نسبي («بعد 3 ساعات»، «قبل يومين»)، وبحالة مثل منتهي الصلاحية أو غير صالح بعد.
  4. راجع التحذيرات فوق النتائج، مثلًا عندما تكون قيمة alg هي none أو عندما يبدو تاريخ ما مكتوبًا بالمللي ثانية.
  5. للتحقق من التوقيع، أدخل المفتاح في قسم التحقق من التوقيع ثم انقر تحقّق من التوقيع.

فك الترميز ليس تحققًا

يتكون رمز JWT من ثلاثة أجزاء بترميز Base64url تفصل بينها نقاط: header.payload.signature. الترويسة والحمولة مرمّزتان فقط وليستا مشفّرتين، لذا يستطيع كل من يملك الرمز قراءتهما، وتستطيع هذه الأداة فك ترميز أي رمز دون مفتاح. ويعني ذلك أيضًا أن الحمولة المفكوكة لا تثبت شيئًا، فقد يكون أحدهم عدّلها. وحده التوقيع الصالح يُثبت أن الرمز صادر عن حامل المفتاح وأنه لم يُعدَّل منذ ذلك الحين. لهذا يبقى سطر الحالة يعرض «تم فك الترميز (التوقيع غير مُتحقَّق منه).» إلى أن تتحقق منه.

أما الرمز المكوّن من خمسة أجزاء فهو JWE (رمز JWT مشفّر)، ولا يمكن قراءة محتواه دون مفتاح فك التشفير، وتنبّهك الأداة إلى ذلك.

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

  • HS256 وHS384 وHS512 ‏(HMAC): أدخل السر المشترك. استخدم صيغة السر لتحدد هل هو نص عادي (UTF-8) أم Base64/Base64url، لأن بعض المزوّدين يحفظون الأسرار بصيغة Base64. يمكنك أيضًا لصق JWK من النوع oct. وإذا كان السر أقصر من ناتج دالة التجزئة (32 بايت في HS256)، تنبّهك الأداة إلى أنه دون الحد الأدنى الوارد في RFC 7518.
  • RS256/384/512 وPS256/384/512 وES256/384/512 وEdDSA: الصق المفتاح العام (PEM أو JWK). كتل PEM المقبولة هي PUBLIC KEY وRSA PUBLIC KEY وCERTIFICATE (يُقرأ المفتاح من شهادة X.509). ويصلح أيضًا JWK مفرد أو مجموعة JWK Set كاملة، فيُستخدم المفتاح الذي يطابق kid الخاص به ما في الترويسة. تُرفض المفاتيح الخاصة، فالمتحقق لا يحتاج إليها أبدًا. يدعم EdDSA منحنى Ed25519 في المتصفحات التي تنفّذه في Web Crypto.

يجري التحقق عبر واجهة Web Crypto في المتصفح. ونتيجة «توقيع غير صالح» تعني أن المفتاح خاطئ أو أن الرمز معدَّل. لاحظ أن الخوارزمية تؤخذ هنا من ترويسة الرمز، أما الخادم الحقيقي فيجب أن يثبّت الخوارزمية المتوقعة في إعداداته، وإلا استطاع المهاجم أن يختارها بنفسه.

ملاحظات أمنية

  • الرموز بيانات اعتماد. من يملك رمز وصول صالحًا يستطيع عادةً التصرف باسم صاحبه حتى تنتهي صلاحيته. تفك هذه الأداة الترميز وتتحقق من كل شيء داخل متصفحك، ولا ترسل الرمز ولا المفتاح إلى أي مكان. ومع ذلك تجنّب لصق رموز بيئة الإنتاج في أدوات لا يمكنك فحصها.
  • alg: none تعني أن الرمز غير موقَّع، ويستطيع أي شخص تزويره، ويجب على الخادم رفضه. تعرض الأداة تحذيرًا وترفض «التحقق» من مثل هذا الرمز.
  • فحوص الوقت هنا تعتمد على ساعة حاسوبك دون أي هامش تسامح، بينما تسمح الخوادم غالبًا بفارق دقيقة أو دقيقتين بين الساعات.
  • تواريخ JWT ‏(NumericDate) تُحسب بالثواني منذ 1 يناير 1970 بالتوقيت العالمي UTC. القيمة المكوّنة من 13 رقمًا غالبًا ما تكون بالمللي ثانية، وهو خطأ شائع.

الأسئلة الشائعة

هل تستطيع هذه الأداة أن تخبرني هل الرمز صالح؟

تستطيع أن تخبرك هل التوقيع يطابق المفتاح الذي تقدّمه، وهل شرطا exp وnbf متحققان في هذه اللحظة. لكن قبول الرمز يعتمد أيضًا على فحوص لا يعرفها إلا الخادم: الجهة المُصدِرة المتوقعة (iss)، والجمهور (aud)، والخوارزمية، والإبطال.

لماذا يفشل التحقق رغم أن السر صحيح؟

تحقّق من صيغة السر: السر المكتوب بـ Base64 إذا أُدخل كنص عادي يعطي مفتاحًا مختلفًا. وتأكد كذلك من عدم إضافة مسافة أو سطر جديد إلى السر، لأن مفاتيح HMAC تُقارَن بايتًا ببايت.

ما الفرق بين RS256 وPS256 وES256؟

الثلاثة توقيعات بالمفتاح العام مع SHA-256. يستخدم RS256 خوارزمية RSA مع حشو PKCS#1 v1.5، ويستخدم PS256 خوارزمية RSA مع حشو PSS، أما ES256 فيستخدم ECDSA على المنحنى P-256، وتواقيعه أقصر بكثير.

أين أجد المفتاح العام لمزوّد الهوية؟

ينشر مزوّدو الهوية مجموعة JWKS ‏(JSON Web Key Set)، ويكون رابطها عادةً في /.well-known/openid-configuration تحت jwks_uri. افتحها بنفسك والصق JSON هنا، وستختار الأداة المفتاح حسب kid دون أن تجلب أي شيء من الشبكة.

هل لصق رمزي هنا آمن؟

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