أدوات JWT للمطورين فك التشفير، تشفير، وفحص انتهاء الصلاحية
ثلاثة أداة متوفرة مجانًا في المتصفح تغطي كامل سلسلة JWT: تحليل تذكرة لفحص المحتويات، تشفير واحدة لمحاكاة الاختبارات، وفحص انتهاء الصلاحية لحل أخطاء 401 — لا حاجة للتنزيل.
كل مطور الخدمة قد واجه هذا: يظهر خطأ 401 غير مُصَدَّق في السجل، ويبدأ السبب. هل انتهت صلاحية الرمز؟ هل تم التوقيع باستخدام مفتاح خاطئ؟ هل فقدت المعلومة في الطرف بين الخدمات؟ JWTs — رموز ويب من نوع JSON — هي العضو المُتَّصل في التحقق من الهوية في العصر الحديث، وعندما تنهار، تصبح كل الأشياء خلف البوابة المُحددة غير مُمكنة.
المسألة ليست أن JWTs معقدة. هي بسيطة في الهيكل: ثلاثة أجزاء مُشفّرة بـ base64url مُجمعة بعلامات نقطة — الرأس، المحتوى، التوقيع. المشكلة هي أن الرمز الخام مثل eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTc0NjA5NjAwMH0.mK2xVpQ8nZ3aF7tLdRhW6sYbcXeUoIPjNvGqTmAS1kE لا يُخبرك شيئًا حتى تُفكّكه. والفكّك — سريعًا، في المتصفح، دون تثبيت أي شيء — هو ما يتعامل معه هذه الأدوات الثلاثة المجانية.
هذا الدليل يمرّ عبر كامل سلسلة JWT: فك الرمز لفحص ما داخله، توليد رمز لمحاكاة التحقق في الاختبارات، وفحص انتهاء الصلاحية لتحديد أخطاء الانتهاء. كل قسم يستخدم نفس الرمز الافتراضي أعلاه لكي تتمكن من التّتبع من البداية إلى النهاية.
الأداة 1 — مُفكّك JWT: رؤية داخل أي رمز فورًا
ال مُفكّك JWT تُقسّم أي رمز إلى مكوناته الثلاثة، وتُفكّك الرأس والمحتوى من base64url إلى JSON قابل للقراءة.
الصق الرمز المذكور أعلاه وسترى الرأس المُفكّك إلى:
{
"alg": "HS256",
"typ": "JWT"
}
والمحتوى:
{
"sub": "user_123",
"role": "admin",
"exp": 1746096000
}
هذا exp الحقل هو وقت Unix. في البداية لا يُفهم معناه — لكن المُفكّك يحوله إلى تاريخ قابل للقراءة، بحيث تعرف فورًا ما إذا كان الرمز مُتاحًا أو مُتَسَلّم.
شيء يجب فهمه: المُفكّك لا يتحقق من التوقيع بشكل افتراضي. يتطلب التحقق من التوقيع المفتاح (لـ HS256) أو المفتاح العام (لـ RS256/ES256). ما يُقدّمه المُفكّك هو المحتوى المُفكّك — وهو كل ما تحتاجه عند تدقيق خطأ 401، أو التحقق من المُعطيات المُشتملة، أو فحص رمز من مزود هوية خارجي.
مهم أن يُلاحظ: المحتوى في JWT مُشفّر بـ base64url وليس مُشفّرًا. أي أداة (أو شخص) يمتلك الرمز يمكنه قراءة المحتوى دون المفتاح. يُثبت التوقيع فقط أن الرمز لم يُعدل. لهذا السبب لا يجب أن تُخزن بيانات حساسة — مثل كلمات المرور، أرقام البطاقات، أرقام الهوية — داخل محتوى JWT.
الأداة 2 — مُولد JWT: إنشاء رموز للاختبارات
ال مُولد JWT يقوم بالعكس: تُقدّم محتوى JSON، تُختار خوارزمية (يُعتبر الافتراضي هو HS256)، تُدخل المفتاح، ويُنتج الأداة رمزًا موقّعًا يمكنك استخدامه فورًا.
الاستخدام الأكثر شيوعًا هو محاكاة التحقق في الاختبارات. فمثلاً، تحتاج اختبارات التكامل إلى تجاوز نقطة نهاية مُحمية. بدلًا من توصيل تدفق تسجيل دخول حقيقي، تُبنى رمزًا يحتوي على المُعطيات المطلوبة من قبل النقطة:
{
"sub": "test_user_001",
"role": "editor",
"iat": 1746009600,
"exp": 1746096000
}
أعد التوقيع باستخدام مفتاح الاختبار، وانسخ الرمز الناتج إلى رؤوس اختبارك، وستُردّ النماذج المحمية كأنها تم التحقق من قبل مستخدم حقيقي. لا حاجة لمحاكاة وحدة التحقق من الهوية، ولا حاجة لتشغيل مزود هوية — فقط رمز صالح يحتوي على المُعطيات المطلوبة.
يُستخدم المُولد أيضًا عندما تُبنى خدمة جديدة وتريد اختبار كيفية تصرفها مع مجموعات مُعطيات محددة: مُفقودة الأدوار، رموز مُنتهية الصلاحية، مسارات غير متوقعة. أنشئ رموزًا بمعطيات مُحددة وانسخها إلى الوحدة المُتوسطة لرؤية كيف ترد.
إذا كنت بحاجة إلى فهم الخطوة المُشفّرة بـ base64url نفسها — لأن المحتوى في JWT مُشفّر فقط وليس مُشفّرًا — فإن مُفكّك base64 يسمح لك بفكّ أي جزء من الرمز يدويًا. الصق الجزء الأوسط من أي رمز (جزء المحتوى) إلى مُفكّك base64 وستحصل على المحتوى الأصلي كـ JSON. نفس الطريقة، خطوة بخطوة.
الأداة 3 — مُدقّق انتهاء صلاحية JWT: تدقيق 401 بدون الحسابات
انتهاء صلاحية الرمز مسؤول عن نسبة كبيرة من فشل التحقق في البيئة الإنتاجية. فإن مُدقق انتهاء صلاحية JWT تُأخذ أي رمز وتعطيك فورًا: هل انتهت صلاحيته؟ وإذا كانت كذلك، بعد كم؟
الصق الرمز المذكور أعلاه وستستخرج المُدقّق exp الحقل، وتحويله من وقت Unix إلى تاريخ قابل للقراءة، ثم مقارنته مع الوقت الحالي. ستحصل على حالة واضحة: صالحة (مع الوقت المتبقّي) أو انتهت (مع مدة انتهائها).
هذا مهم أكثر مما يبدو. عندما يظهر خطأ 401 في البيئة الإنتاجية، السؤال الأول دائمًا هو "هل انتهت صلاحية الرمز أم أن هناك شيء آخر خاطئ؟" الإجابة على هذا السؤال من خلال حسابات ذهنية على وقت Unix — 1746096000 - current_time / 3600 — تُستهلك الوقت وتُدخل أخطاء. يُجيب المُدقّق على هذا السؤال بخطوة واحدة فقط.
يُظهر أيضًا المُدقّق iat (وقت الإصدار) عند وجوده، بحيث يمكنك رؤية الوقت الدقيق الذي تم إصداره فيه والوقت الذي استمر فيه الجلسة. مفيد عند تدقيق أخطاء تجديد الرمز أو تتبع السبب الذي أدى إلى فشل جلسة طويلة الأمد.
الجمع: سلسلة تدقيق معتادة
تتلقى خطأ 401. إليك أسرع طريق من الخطأ إلى الحل:
- تحقق من انتهاء الصلاحية أولاً. الصق الرمز في مُدقق انتهاء الصلاحية. إذا انتهت صلاحيته، فإن الحل هو تجديد الرمز — لا حاجة لاستكشاف أعمق.
- تحقق من المحتوى. إذا كان الرمز ما زال صالحًا، صقه في مُفكّك JWT. تحقق من المُعطيات: هل هو صحيح؟ هل المُعطى المُتوقع موجود؟ هل المُستهدف (
sub) مناسب للنقطة التي تصل إليها؟roleأوscopeأعد تجربته برمز مخصص.audإذا احتملت أن تكون مُعطى محدد هو السبب وراء الرفض، أنشئ رمزًا باستخدام - مُولد وتجربته مباشرة. هذا يعزل ما إذا كان السبب هو محتوى المُعطى أو هيكل الرمز نفسه. أدوات ثلاث، أقل من دقيقة، بدون تثبيت. معظم الأخطاء المرتبطة بـ JWT تُحلّ في الخطوة 1 أو 2. أدوات JWT للمطورين: فك، توليد، وفحص انتهاء صلاحية الرمز 2
أدوات JWT للمطورين: فك، توليد، وفحص انتهاء صلاحية الرمز 1
تثبيت ملحقاتنا
أضف أدوات IO إلى متصفحك المفضل للوصول الفوري والبحث بشكل أسرع
恵 وصلت لوحة النتائج!
لوحة النتائج هي طريقة ممتعة لتتبع ألعابك، يتم تخزين جميع البيانات في متصفحك. المزيد من الميزات قريبا!
