فهم بنية JWT
رمز JSON Web Token أو JWT هو تنسيق رمز مضغوط وآمن لعناوين URL، معرّف بموجب RFC 7519. يتكون كل JWT من ثلاثة أجزاء مشفرة بـ Base64URL مفصولة بنقاط: الرأس والحمولة والتوقيع. يُعلن الرأس الخوارزمية المستخدمة لتوقيع الرمز (مثل HS256 و RS256 و ES256) ونوع الرمز. تحتوي الحمولة على المطالبات — تصريحات حول الموضوع أو الرمز نفسه.
تشمل المطالبات المسجلة القياسية: `iss` (المُصدر)، و`sub` (الموضوع)، و`aud` (الجمهور)، و`exp` (وقت الانتهاء كطابع زمني يونيكس)، و`nbf` (ليس قبل)، و`iat` (صادر في)، و`jti` (معرّف JWT). المطالبات الخاصة هي أي أزواج قيمة-مفتاح إضافية تحتاجها تطبيقاتك، مثل أدوار المستخدمين أو معرّفات المستأجر. يعرض أداة فك التشفير جميع المطالبات في عرض JSON مقروء جنباً إلى جنب مع وحدات البايت الخام المفكوكة بـ Base64URL.
التوقيع هو الجزء الثالث. يحسبه الخادم المُصدر باستخدام الخوارزمية المُعلنة في الرأس ومفتاح سري أو خاص. يضمن التوقيع عدم التلاعب بالرمز أثناء النقل. تعرض هذه الأداة وحدات بايت التوقيع الخام لكنها لا تتحقق من التوقيع — التحقق يتطلب السر من جهة الخادم أو المفتاح العام.
قراءة المطالبات وتاريخ الانتهاء
مطالبة `exp` هي قيمة تاريخ رقمية تمثل الثواني منذ حقبة يونيكس (1970-01-01T00:00:00Z). تحول هذه الأداة القيمة إلى طابع زمني UTC مقروء لترى على الفور متى ينتهي الرمز دون حساب يدوي. وبالمثل، يتم عرض `iat` و`nbf` كتواريخ مقروءة.
قد تكون مطالبة `aud` سلسلة أو مصفوفة سلاسل تحدد المستلمين المقصودين. إذا تلقى تطبيقك رمزاً لا تتطابق فيه `aud` مع القيمة المتوقعة، يجب رفض الرمز. تسلط الأداة الضوء على حقل الجمهور لتتمكن من التحقق منه بسرعة أثناء التطوير أو تصحيح الأخطاء.
يضمّن كثير من موفري الهوية مطالبات غير قياسية: يتضمن Azure AD مطالبات `oid` و`tid` و`roles`؛ يستخدم Auth0 مطالبات بفضاء أسماء `https://`؛ يضيف Cognito مطالبة `cognito:groups`. يعرض عرض الحمولة كل مطالبة موجودة في الرمز، مانحاً إياك رؤية كاملة لما يؤكده الموفر دون الحاجة إلى كتابة كود فك تشفير.
اعتبارات الأمان
فك تشفير JWT لا يعني التحقق منه. يُظهر لك الرمز المفكوك المطالبات، لكنه لا يثبت أن الرمز أصيل أو لا يزال صالحاً. يجب على التحقق من جهة الخادم: التحقق من التوقيع مقابل السر أو المفتاح العام، والتأكد من أن `exp` لم ينتهِ، وتأكيد تطابق `iss` و`aud` مع القيم المتوقعة، والتحقق الاختياري من `nbf`. لا تثق أبداً بمطالبات من رمز غير متحقق منه.
يمكن أن تكون الرموز موقعة (JWS) أو موقعة ومشفرة في آن معاً (JWE). تتعامل هذه الأداة مع رموز JWS — الشكل الأكثر شيوعاً المستخدم في تدفقات OAuth 2.0 و OpenID Connect. إذا لصقت رمز JWE (الذي يحتوي على خمسة أجزاء مفصولة بنقاط)، ستكون الحمولة نصاً مشفراً غير مقروء بدون مفتاح فك التشفير.
تجنب لصق رموز الإنتاج التي تحتوي على بيانات مستخدم حساسة في الأدوات عبر الإنترنت. تعمل هذه الأداة بالكامل في متصفحك ولا ترسل أي بيانات إلى أي خادم، مما يجعلها آمنة للتطوير المحلي وتصحيح الأخطاء. بالنسبة لبيانات الاعتماد في الإنتاج، يُفضل استخدام أدوات سطر الأوامر مثل `jwt-cli` أو كود الفحص على مستوى المكتبة في بيئتك الخاصة.