انتقل إلى المحتوى
أدواتأدوات
أدوات

ما هو JWT وكيف تقرأ محتواه

وقت القراءة: 4 د

رمز JWT، أي JSON Web Token، سلسلة مختصرة من ثلاثة أجزاء تفصل بينها نقاط: ترويسة وحمولة وتوقيع. تخبر الترويسة كيف وُقِّع الرمز، وتحمل الحمولة المعلومات وتسمى مطالبات (claims)، ويتيح التوقيع للخادم أن يتحقق أن أحدًا لم يعدّله. وتستطيع قراءة الجزأين الأولين بـأداة فك JWT في ثوانٍ.

وأهم ما ينبغي معرفته أن JWT مرمَّز وليس مشفَّرًا. فأي شخص يملك الرمز يقرؤه، لذلك يخبرك فك الترميز بما فيه لا بمدى الوثوق به. ويوضح هذا الدليل كيف تقرأ الرمز وماذا تفحص.

الخطوات

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

  1. 1

    الصق الرمز

    افتح أداة فك JWT والصق الرمز. وتُزال البادئة «Bearer » القادمة من ترويسة Authorization تلقائيًّا. ويبدو JWT العادي كثلاث قطع Base64URL: xxxxx.yyyyy.zzzzz.

  2. 2

    اقرأ الترويسة

    الترويسة كائن JSON صغير. فـalg هي خوارزمية التوقيع، مثل HS256 (سر مشترك) أو RS256 وES256 (زوج مفتاح خاص وعام)، وtyp عادةً JWT. وإذا كانت alg تساوي none فالرمز غير موقّع ولا ينبغي الوثوق به.

  3. 3

    اقرأ الحمولة

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

  4. 4

    افحص الأوقات

    exp وقت انتهاء الرمز، وnbf وقت بدء صلاحيته، وiat وقت إصداره، وكلها بوقت يونكس بالثواني. وتحوّلها الأداة إلى تاريخ جهازك المحلي وتخبرك هل انتهى الرمز أو لم يبدأ بعد.

  5. 5

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

    إن كان لديك السر (لخوارزميات HS256 وHS384 وHS512) أو المفتاح العام (لخوارزميات RS وES) فالصقه في مربع التحقق. وتفحص الأداة التوقيع محليًّا بتشفير متصفحك وتخبرك: صحيح أو غير صحيح أو لم يُفحص.

  6. 6

    تحقق لمن هو

    قارن iss (من أصدره) وaud (لمن هو) بما يتوقعه تطبيقك. فالتوقيع الصحيح على رمز مخصص لخدمة أخرى يظل رمزًا خاطئًا.

المطالبات القياسية في قائمة واحدة

iss المُصدِر، وsub الموضوع (غالبًا معرّف المستخدم)، وaud الجمهور، وexp وقت الانتهاء، وnbf «ليس قبل»، وiat «وقت الإصدار»، وjti معرّف فريد للرمز. وتضيف التطبيقات مطالباتها الخاصة مثل الاسم أو الدور أو المستأجر. ولا مشكلة في العربية وسائر نصوص يونيكود في المطالبات لأن الحمولة JSON بترميز UTF-8.

الترميز ليس تشفيرًا

لا يغيّر Base64URL إلا طريقة كتابة البايتات لتناسب الرابط أو الترويسة، ولا يخفي شيئًا. فلا تضع في حمولة JWT كلمات مرور أو أرقام بطاقات أو أسرارًا. وإن كان المحتوى يجب أن يبقى خاصًّا فهو يحتاج تشفيرًا (صيغة أخرى تسمى JWE من خمسة أجزاء) أو أن يبقى على الخادم.

عادات تحفظ الرموز آمنة

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

مشاكل شائعة وحلولها

  • تقول الأداة إن التوقيع غير صحيح

    من الأسباب الشائعة سر أو مفتاح خاطئ، أو مفتاح بصيغة خاطئة، أو مسافة أو سطر زائد، أو عدم تطابق نوع المفتاح مع alg في الترويسة. الصق المفتاح كما صدر تمامًا.

  • يظهر الرمز منتهيًا

    وقت exp فيه في الماضي. اطلب رمزًا جديدًا. وإن بدا منتهيًا فور إصداره فقارن ساعة حاسوبك بساعة الخادم، فقد يسببه اختلاف الساعتين.

  • للرمز خمسة أجزاء أو لا يُفك

    خمسة أجزاء تعني غالبًا رمز JWE مشفّرًا لا يُقرأ دون مفتاح فك التشفير. وتأكد أيضًا أنك نسخت السلسلة كاملة بلا علامات اقتباس أو مسافات.

  • تظهر في الحمولة حروف غريبة

    يجب أن تكون الحمولة JSON بترميز UTF-8. وإذا رمّز تطبيق النص بطريقة أخرى فستبدو الحروف خاطئة. أما العربية المرمَّزة صحيحًا فتظهر طبيعية.

Base64

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

ماذا يحتوي JWT؟

ترويسة فيها الخوارزمية، وحمولة فيها مطالبات مثل معرّف المستخدم والانتهاء، وتوقيع. والجزآن الأولان مقروءان لكل من يملك الرمز.

هل من الآمن فك JWT أونلاين؟

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

هل يثبت فك JWT أنه صالح؟

لا. فك الترميز يقرأ فقط. والصلاحية تحتاج فحص التوقيع بالمفتاح الصحيح، إضافة إلى فحص الانتهاء والمُصدِر والجمهور.