← جميع الأدوات

مفكّك ترميز JWT

فُكّ ترميز أي JSON Web Token في متصفحك. اقرأ الترويسة والحمولة والمطالبات فوراً ومحلياً. فكّ الترميز ليس تحققاً، ولا شيء يغادر جهازك.
الترويسة
الحمولة

ما الذي يفعله مُفكّك JWT فعلًا

يبدو رمز JSON Web Token (JWT) كسلسلة طويلة مبهمة من الأحرف العشوائية، لكنه ليس مشفّرًا وليس شيفرة سرية. إنه حاوية مدمجة وآمنة لعناوين URL تحمل بيانات منظمة بين طرفين. الصق رمزًا في المُفكّك أعلاه، فيقسم تلك السلسلة ويعرض لك JSON الحقيقي بداخلها — البيانات الوصفية، والادعاءات، ولمن صدر الرمز، ومتى ينتهي. وكل شيء يحدث مباشرة في متصفحك. فالرمز لا يُرفع ولا يُسجَّل ولا يُرسَل إلى أي مكان، وهو أمر بالغ الأهمية حين يكون ما تفحصه بيانات اعتماد جلسة حية.

رمز JSON Web Token ينقسم إلى ثلاثة مقاطع متوهجة مرمّزة بـ Base64url: الترويسة والحمولة والتوقيع
سلسلة واحدة منقّطة، وثلاثة أجزاء متمايزة: الترويسة والحمولة والتوقيع.

ثلاثة أجزاء، ونقطتان

كل JWT سليم البناء هو ثلاث سلاسل مرمّزة بـ Base64url موصولة بنقاط: header.payload.signature. وحرف النقطة المفرد هذا هو ما يعرف به المحلّلون أين ينتهي مقطع ويبدأ التالي، وهو سبب رفض الرمز الذي يحمل عددًا خاطئًا من النقاط قبل قراءة أي شيء آخر.

أما الترويسة فهي كائن JSON صغير يصف الرمز نفسه. وتحتوي دائمًا تقريبًا على typ (النوع، وعادة JWT) وalg — خوارزمية التوقيع، مثل HS256 (HMAC مع SHA-256) أو RS256 (RSA مع SHA-256). وتخبر الترويسة المُتحقِّق بدقة كيف أُنتج التوقيع.

والحمولة هي الجزء الذي يهتم به معظم الناس. وهي كائن JSON آخر يحمل الادعاءات — وهي تصريحات عن المستخدم والرمز. وتصنّف المواصفة الادعاءات إلى مسجّلة (أسماء قياسية محجوزة)، وعامة، وخاصة (أسماء مخصصة تبتكرها لتطبيقك). وفكّ ترميز الحمولة هو ما يكشف من سجّل الدخول، وأي دور يحمله، ومتى تنقضي جلسته.

والتوقيع هو الختم التشفيري. ويُحسَب على الترويسة والحمولة المرمّزتين باستخدام الخوارزمية الواردة في الترويسة إضافة إلى مفتاح سري أو خاص. ولأنه يغطي المقطعين الآخرين، فإن أي تغيير في الترويسة أو الحمولة — ولو بحرف واحد — يُبطله.

الادعاءات التي ستراها أكثر من غيرها

الادعاءات المسجّلة أسماء قصيرة من ثلاثة أحرف عرّفها المعيار RFC 7519 كي تتمكن الأنظمة المختلفة من التعامل البيني. وقلة منها تظهر في كل مكان تقريبًا:

  • issالمُصدِر: من سكّ الرمز (خادم المصادقة أو مزوّد الهوية لديك).
  • subالموضوع: الكيان الذي يدور حوله الرمز، وهو عادةً معرّف مستخدم ثابت.
  • audالجمهور: المُستلِم المقصود بالرمز. وينبغي لواجهة برمجة التطبيقات أن ترفض الرموز التي لا يكون جمهورها هي نفسها.
  • expوقت الانتهاء: طابع زمني Unix يجب ألا يُقبل الرمز بعده.
  • iatوقت الإصدار: الطابع الزمني Unix لحظة إنشاء الرمز.

وقد تصادف أيضًا nbf (ليس قبل) وjti (معرّف رمز فريد). والطوابع الزمنية هي ثوانٍ منذ عام 1970 بالتوقيت العالمي المنسق، ولهذا فإن مُفكّكًا يعرضها كتواريخ مقروءة للإنسان يوفّر عليك حساب ما إذا كان الرمز قد انتهى بالفعل.

فكّ الترميز ليس تحقّقًا — هذا هو الجزء الذي يوقع الناس

هذا التمييز هو أهم ما ينبغي فهمه عن رموز JWT. فـ فكّ الترميز يعني قراءة المحتويات: وهو لا يتطلب مفتاحًا، ويمكن لأي شخص يحمل الرمز القيام به، لأن Base64url ترميز وليس تشفيرًا. أما التحقق فيعني إثبات أن الرمز أصيل وغير معبوث به — بإعادة حساب التوقيع بالمفتاح السري أو العام الصحيح وتأكيد تطابقه.

هذه الأداة تفكّ الترميز. فهي تعرض لك ما يقوله الرمز، لا ما إذا كان الرمز جديرًا بالثقة. فقد يكون الرمز مزوّرًا أو منتهيًا أو مُعادًا تشغيله ومع ذلك يُفكّ إلى JSON يبدو نظيفًا تمامًا. لا تتخذ أبدًا قرار تفويض اعتمادًا على الادعاءات المفكوكة وحدها. ففي الإنتاج تتحقق من التوقيع على جانب الخادم، وتفحص exp، وتؤكد تطابق iss وaud مع ما تتوقعه — باستخدام مكتبة موثوقة، لا مقارنة سلاسل مكتوبة يدويًا أبدًا.

رمز متوهج يُفرَد ويُفحَص بجوار ختم توقيع ذهبي يثبت الأصالة
يمكن لأي شخص قراءة رمز. لكن حامل المفتاح وحده يستطيع إثبات أصالته.

الحمولة ليست خزنة

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

الخصوصية والأدوات ذات الصلة

فحص رمز فعل حساس، لذا يعمل هذا المُفكّك بالكامل على جانب العميل — فالتحليل هو JavaScript بسيط في علامة تبويبك ولا يغادر أي شيء جهازك. ولصق رمز جلسة في أداة تعمل عبر خادم يعني تسليم بيانات اعتماد حية لطرف ثالث، وهو تحديدًا ما ينبغي تجنبه. وللاطلاع على الترميز الكامن وراء كل ذلك، انظر أداة Base64 لدينا، واستكشف بقية أدوات المطورين لمزيد من المرافق التي تعمل على الجهاز.

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

هل رمز JWT مشفّر؟

لا. رمز JWT القياسي مرمّز بـ Base64url وليس مشفّرًا. فأي شخص يحمل الرمز يمكنه قراءة الترويسة والحمولة. استخدم JWE إن كنت تحتاج إلى إخفاء المحتويات.

هل تتحقق هذه الأداة من التوقيع؟

لا. إنها تفكّ الترميز وتعرض الترويسة والحمولة فقط. أما التحقق من التوقيع فيتطلب سرّ المُصدِر أو مفتاحه العام وينبغي القيام به على خادمك.

هل من الآمن لصق رمزي هنا؟

نعم. يجري فكّ الترميز بالكامل في متصفحك باستخدام JavaScript محلي. فالرمز لا يُرفع ولا يُخزَّن ولا يُرسَل إلى أي خادم.

ماذا تعني iss وsub وaud وexp وiat؟

هي ادعاءات مسجّلة: المُصدِر، والموضوع، والجمهور، ووقت الانتهاء، ووقت الإصدار. والثلاثة المتعلقة بالوقت تستخدم طوابع Unix الزمنية بالثواني.

هل يمكنني الوثوق بالادعاءات المعروضة بعد فكّ الترميز؟

ليس بمفردها. فالادعاءات المفكوكة قد تأتي من رمز مزوّر أو منتهٍ. تحقق دائمًا من التوقيع وافحص الانتهاء على جانب الخادم قبل الوثوق بها.

لماذا يتكون رمزي من ثلاثة أجزاء مفصولة بنقاط؟

تلك هي الترويسة والحمولة والتوقيع، وكل منها مرمّز بـ Base64url وموصول بنقاط. والنقاط تخبر المحلّلين أين يبدأ كل مقطع وأين ينتهي.