RevealTheme logo

أداة فك ترميز JWT

فك ترميز رموز JSON Web Tokens (JWT) فورًا. تعمل في متصفحك: لا تغادر الرموز جهازك أبدًا، لذا فهي آمنة للاستخدام مع أسرار الإنتاج.

كيفية استخدام هذه الأداة

  1. 1

    الصق رمز JWT الخاص بك في حقل الإدخال.

  2. 2

    انقر على «فك الترميز». يُحلَّل العنوان (header) والحمولة (payload) ويُعرَضان.

  3. 3

    افحص الخوارزمية والمطالبات (claims) ووقت الانتهاء والجهة المُصدِرة.

ما هو JWT وكيف يعمل؟

رمز JSON Web Token (المعرَّف JWT، المحدَّد في RFC 7519) هو طريقة مدمجة وآمنة للروابط لتمثيل مجموعة من المطالبات (claims) حول مستخدم، مع إثبات تشفيري بأن تلك المطالبات لم تُعبَث بها. تشغّل رموز JWT المصادقة في معظم حِزم تقنيات الويب الحديثة: عند تسجيل الدخول، يُنشئ الخادم رمز JWT يحتوي على معرّف المستخدم وصلاحياته، ويوقّعه بمفتاح سري، ويعيده إليك. يخزّن متصفحك الرمز (عادةً في localStorage أو في ملف تعريف ارتباط) ويضمّنه في ترويسة Authorization مع كل طلب لاحق. يتحقق الخادم من التوقيع في كل طلب: إذا كان صالحًا، يُوثَق بمطالبات الرمز؛ وإذا عُبث به، ينكسر التوقيع ويُرفض الطلب. تتكوّن رموز JWT من ثلاثة أجزاء مرمَّزة بـ Base64URL ومفصولة بنقاط: الترويسة تعلن عن خوارزمية التوقيع (HS256 لـ HMAC-SHA256، وRS256 لـ RSA، وES256 لـ ECDSA، وnone للرموز غير الموقّعة، وهو أمر خطير وينبغي أن ترفضها)؛ والحمولة (payload) تحتوي على المطالبات الفعلية (مطالبات قياسية مثل 'sub' للموضوع، و'exp' لمدة الصلاحية، و'iat' لتاريخ الإصدار، إضافة إلى أي مطالبات مخصصة يعرّفها تطبيقك)؛ والتوقيع هو الإثبات بأن الترويسة والحمولة وُقّعتا من قِبل شخص يمتلك السر. تكشف هذه الأداة الجزأين الأولين، وهما معلومات عامة؛ أما التوقيع فلا يمكن التحقق منه إلا بالمفتاح، وهذا هو السبب في أن كل أداة فك ترميز لـ JWT تعرض المطالبات دون التحقق منها.

حالات الاستخدام الشائعة

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

  • افحص رموز JWT الخاصة ببوابات واجهات برمجة التطبيقات (AWS Cognito وAuth0 وOkta) لفهم بنية المطالبات للخدمات اللاحقة.

  • تأكّد من ضبط المطالبات المخصّصة (معرّف المؤسسة، والدور، وأعلام الميزات) بشكل صحيح في كود إصدار الرموز.

  • قارن الرموز قبل التحديث وبعده للتأكّد من تمديد وقت الانتهاء.

  • دقّق خوارزمية الرمز: تأكّد من استخدام RS256 أو ES256 في الإنتاج، وليس 'none' أبدًا.

  • حوّل حمولات base64url من سجلات الخادم إلى مطالبات قابلة للقراءة البشرية.

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

هل هي آمنة للاستخدام مع رموز JWT الإنتاجية؟
نعم. يجري فك الترميز بالكامل في متصفحك عبر JavaScript محلي: لا يصل الرمز إطلاقًا إلى خوادمنا ولا يظهر في أي سجل. يمكنك التحقق من ذلك بفتح DevTools ← علامة التبويب Network أثناء فك الترميز: لا يُطلَق أي طلب صادر. ومع ذلك، عامِل رموز JWT كبيانات اعتماد: لا تلصقها في الروابط أو لقطات الشاشة أو المستندات المشتركة، بصرف النظر عن مكان تشغيل أداة فك الترميز.
هل تتحقق هذه الأداة من التوقيع؟
لا. يتطلب التحقق من التوقيع السر (لـ HS256) أو المفتاح العام (لـ RS256/ES256/PS256). أدوات الويب التي تطلب منك سرك للتحقق من رمز JWT هي إشارة إنذار أمني: فأنت بذلك ترسل مفتاح التوقيع الخاص بك إلى شخص مجهول. تحقق من التوقيعات على الخادم أو باستخدام مكتبة تتحكم بها (jose، jsonwebtoken).
ماذا يحدث إذا انتهت صلاحية رمز JWT الخاص بي؟
انتهاء الصلاحية لا يمنع فك الترميز: المطالبة 'exp' ليست سوى بيانات داخل الحمولة. ابحث عن 'exp' في الحمولة المفكوكة: إنها طابع زمني Unix (ثوانٍ منذ عام 1970). حوّلها باستخدام أداة تحويل الطوابع الزمنية لدينا لمشاهدة مدة الصلاحية في منطقتك الزمنية. إذا كانت قيمة 'exp' قد مرّت بالفعل، فإن الرمز يُرفض من قِبل أي مدقّق متوافق، حتى وإن ظلت أداة فك الترميز تقرأه.
هل يمكن تشفير رموز JWT؟
نعم: يُسمى ذلك JWE (JSON Web Encryption، RFC 7516). تتعامل هذه الأداة مع JWS (JSON Web Signature، الحالة الشائعة)، حيث تكون الحمولة موقّعة لكنها مرئية. تتكوّن رموز JWE من 5 أجزاء مفصولة بنقاط بدلاً من 3، وتتطلب المفتاح الخاص للمُستلِم لفك تشفيرها. إذا كان رمزك يتكوّن من 5 أجزاء، فأنت بحاجة إلى أداة متوافقة مع JWE.
ماذا تعني 'alg': 'none' وهل هي خطيرة؟
'none' تعني عدم وجود توقيع: الرمز غير موقّع ويمكن لأي شخص تزوير أي مطالبة. يجب على أنظمة الإنتاج أن ترفض صراحةً الرموز التي تحمل 'alg: none'. بعض المكتبات تقبلها افتراضيًا (فئة معروفة جدًا من ثغرات CVE). اسمح دائمًا فقط بالخوارزميات التي يتوقعها تطبيقك.
لماذا نستخدم JWT بدلاً من ملفات تعريف ارتباط الجلسة؟
رموز JWT عديمة الحالة (stateless): لا يحتاج الخادم إلى الاستعلام عن جلسة؛ فالرمز نفسه يحتوي على هوية المستخدم وصلاحياته. هذا يجعل رموز JWT مثالية للأنظمة الموزعة وواجهات برمجة التطبيقات. أما ملفات تعريف ارتباط الجلسة فهي ذات حالة (تتطلب تخزينًا للجلسة على الخادم) لكنها أسهل في الإبطال (يكفي حذف الجلسة). المقايضة: تتوسّع رموز JWT بشكل أفضل، لكن لا يمكنك 'تسجيل خروج مستخدم' حتى تنتهي صلاحية الرمز.
ما هي المطالبات القياسية لرمز JWT؟
تعرّف RFC 7519: iss (الجهة المُصدِرة)، sub (الموضوع، عادةً معرّف المستخدم)، aud (الجمهور)، exp (وقت انتهاء الصلاحية)، nbf (ليس قبل)، iat (صدر في)، jti (معرّف JWT). وفيما عدا ذلك، تضيف التطبيقات مطالبات مخصصة مثل 'roles' أو 'permissions' أو 'tenant_id'. أبقِ المطالبات المخصصة صغيرة: تنتقل رموز JWT في ترويسة كل طلب وتزيد من استهلاك عرض النطاق الترددي لديك.

أدوات ذات صلة