كيفية فك تشفير وفحص رموز JWT
رموز JSON Web Token (JWT) هي الطريقة الأكثر شيوعًا لإدارة المصادقة في تطبيقات الويب الحديثة. عندما يكون هناك خطأ في جانب المصادقة — يتم تسجيل خروج مستخدم بدون سبب، أو الأذونات خاطئة، أو تعيد API 401 — فإن فك تشفير JWT غالبًا ما يكون الخطوة الأولى لتصحيح الأخطاء.
ما يحتوي عليه JWT
يحتوي JWT على ثلاثة أجزاء مفصولة بنقاط:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
الرأس — يحتوي على الخوارزمية (HS256 وRS256 وما إلى ذلك) ونوع الرمز.
{"alg": "HS256", "typ": "JWT"}
الحمولة — تحتوي على مطالبات (تأكيدات) حول المستخدم والرمز.
{"sub": "1234567890", "name": "Alice", "exp": 1700000000}
التوقيع — بصمة تشفيرية تضمن أن الرمز لم يتم تعديله. لا يمكنك قراءته دون مفتاح التوقيع.
مطالبات JWT الشائعة
| المطالبة | الاسم الكامل | المحتوى |
|---|---|---|
sub |
Subject | معرّف المستخدم |
exp |
Expiration | طابع زمني Unix لانتهاء الصلاحية |
iat |
Issued At | طابع زمني Unix للإنشاء |
iss |
Issuer | من أنشأ الرمز (خادم المصادقة الخاص بك) |
aud |
Audience | لمن المقصود الرمز |
nbf |
Not Before | الرمز غير صالح قبل هذا التاريخ |
jti |
JWT ID | معرّف فريد للرمز |
كيفية فك تشفير JWT
- الصق رمزك — أدخل JWT الكامل (تنسيق رأس.حمولة.توقيع) في فاكّ التشفير.
- راجع الأقسام المفكوكة — تعرض الأداة الرأس (الخوارزمية) والحمولة (المطالبات) والتوقيع كـ JSON منسَّق.
- تحقّق من المطالبات — افحص تاريخ انتهاء الصلاحية والمُصدِر والموضوع وأي مطالبات مخصّصة.
تصحيح الأخطاء بـ JWT
رمز منتهي الصلاحية؟ تحقّق من مطالبة exp. حوّل طابع Unix الزمني إلى تاريخ قابل للقراءة. إذا كان قد مضى، فقد انتهت صلاحية الرمز ويجب تجديده.
أذونات خاطئة؟ ابحث عن مطالبات الدور أو النطاق في الحمولة. تختلف بين التطبيقات لكنها تبدو غالبًا مثل "role": "admin" أو "scope": "read write".
مشكلة هوية مستخدم؟ تحدّد مطالبة sub المستخدم. تحقّق من أنها تطابق المعرّف المتوقَّع.
رمز مرفوض؟ تحقّق من مطالبة aud (الجمهور). إذا كانت API تتوقّع جمهورًا محدّدًا والرمز لديه آخر، فسيتم رفضه.
ملاحظات أمنية مهمة
- JWT غير مشفّر — يمكن لأي شخص فك تشفير الحمولة. لا تضع كلمات مرور أو مفاتيح API أو أسرار أخرى في JWT.
- تحقّق دائمًا من التواقيع من جانب الخادم — يظهر لك فاك التشفير ما يدّعيه الرمز، لكن التحقّق من التوقيع فقط يثبت أنه لم يتم تعديله.
- تحقّق من انتهاء الصلاحية — يجب رفض الرموز المنتهية الصلاحية دائمًا. إذا قبل تطبيقك رموزًا منتهية الصلاحية، فهذه ثغرة أمنية.
الأسئلة الشائعة
هل يمكنني التحقّق من توقيع JWT بفاك تشفير؟
لا. يتطلّب التحقّق من التوقيع سر التوقيع أو المفتاح العام، المحفوظَين على خادمك. يظهر لك فاك التشفير ما هو في الرمز، لكن التحقّق التشفيري يجب أن يتم على نهايتك الخلفية. لا تثق أبدًا بـ JWT غير محقّق منه في الإنتاج.
هل من الآمن لصق JWT في أداة عبر الإنترنت؟
نعم، عندما تعمل الأداة في متصفّحك. تعالج فاكّات التشفير في المتصفّح الرمز محليًا — لا يتم إرسال أي شيء إلى خادم. تجنّب الأدوات التي تقوم بطلبات شبكية برمزك.
ما هي مطالبة exp؟
مطالبة exp (انتهاء الصلاحية) هي طابع زمني Unix يشير إلى متى ينتهي صلاحية الرمز. بعد هذا التاريخ، يجب رفض الرمز. تحقّق دائمًا من هذه المطالبة لتصحيح مشاكل المصادقة.
هل يمكن تشفير JWT؟
JWT القياسي (JWS) موقَّع لكنه غير مشفَّر — يمكن لأي شخص فك تشفير الحمولة. رموز JWE (JSON Web Encryption) مشفَّرة، لكنها أقل شيوعًا. لا تضع أبدًا بيانات حساسة (كلمات مرور أو أسرار) في حمولة JWT قياسية.