فك ترميز JWT (فحص الرمز المميز)

الصق JSON Web Token واقرأ الترويسة والحمولة بصيغة JSON منسّقة — مع تحويل أوقات الانتهاء إلى تواريخ مفهومة. يعمل بالكامل دون اتصال.

1,163 مشاهدة

كيف تعمل الأداة

الرمز المميز JWT (JSON Web Token) هو نص مضغوط مكوّن من ثلاثة أجزاء مشفّرة بترميز Base64URL ومفصولة بنقاط: header.payload.signature. Base64URL هو صيغة آمنة لعناوين URL من Base64 العادي، يستبدل +// بـ-/_ ويحذف علامات الحشو = النهائية، بحيث يمكن للنتيجة أن توضع داخل عنوان URL أو ترويسة HTTP دون الحاجة إلى ترميز إضافي. الترويسة (header) هي كائن JSON صغير يحدّد خوارزمية التوقيع ونوع الرمز — وعادةً ما تكون بالشكل {"alg":"HS256","typ":"JWT"}. أما الحمولة (payload) فهي كائن JSON من "المطالبات" (claims): أزواج مفتاح/قيمة اعتباطية تصف من يمثله الرمز وما الذي يُسمح له بفعله، إضافة إلى بضع مطالبات زمنية مسجَّلة — iat (وقت الإصدار) وnbf (غير صالح قبل) وexp (انتهاء الصلاحية)، وجميعها مخزَّنة كطوابع زمنية يونكس. أما التوقيع فيُحسب على الجزأين الأولين باستخدام الخوارزمية المذكورة في الترويسة ومفتاح لا يملكه سوى الخادم المُصدِر.

الصق رمزًا هنا، وستقوم الأداة بتقسيمه عند نقطتيه، وفك ترميز الترويسة والحمولة بـBase64URL، ثم عرض كل منهما كـJSON منسّق بإزاحات واضحة. كما تُحوَّل أي قيم exp/iat/nbf إضافيًا إلى تاريخ مقروء للبشر، مع شارة تُظهر بنظرة واحدة ما إذا كان الرمز منتهي الصلاحية حاليًا.

الرموز JWT هي العمود الفقري لمعظم أنظمة المصادقة الحديثة: رموز الوصول في OAuth 2.0، ورموز الهوية في OpenID Connect، وأنظمة الجلسات المخصّصة، كلها تستخدم هذه الصيغة لأنها تتيح لخادم إصدار بيانات اعتماد قائمة بذاتها يمكن لخدمات أخرى قراءتها دون استعلام قاعدة بيانات — طالما استطاعت التحقق من التوقيع. الخوارزميات الشائعة هي HS256 (HMAC بمفتاح سري مشترك) وRS256/ES256 (توقيعات RSA أو منحنى إهليلجي غير متماثلة، حيث يحتفظ المُصدر بمفتاح خاص ويمكن لأي شخص التحقق بالمفتاح العام المطابق).

ما يجب أن تعرفه

فك الترميز ليس توثيقًا (تحققًا). الترويسة والحمولة مُرمَّزتان فقط وليستا مشفّرتين، لذا يستطيع أي شخص قراءتهما دون مفتاح — كما يستطيع أي شخص أيضًا تزوير رمز بأي مطالبات يريدها. ما يجعل رمز JWT جديرًا بالثقة هو توقيعه حصرًا، والتحقق من التوقيع يتطلب المفتاح السري (لخوارزميات HMAC) أو المفتاح العام للمُصدِر (لخوارزميات RSA/ECDSA). ينبغي أن يتم هذا التحقق على خادم يملك المفتاح؛ ولا يمكن إجراؤه بأمان داخل أداة متصفح، لأن كشف المفتاح السري هناك يُبطل الغرض منه أصلًا. تعامل مع هذه الأداة بوصفها معينًا لتصحيح الأخطاء فقط — لا كدليل على أن رمزًا ما أصلي أو لا يزال صالحًا.

كن حذرًا أيضًا مما تلصقه: يحمل رمز JWT بيانات جلسة أو تفويض، لذا عامله معاملة كلمة المرور وتجنّب لصق رموز إنتاج حقيقية في أي أداة على جهاز مشترك. الرموز ذات الخمسة أجزاء المفصولة بنقاط هي JWE (مشفّرة)، وليست JWS (موقّعة) — تتعامل هذه الأداة مع النوع الموقّع الأكثر شيوعًا بكثير. ولا تثق أبدًا بشكل أعمى بحقل alg في كود التحقق الخاص بك — هناك هجوم معروف يخدع التطبيقات الساذجة لقبول alg: none أو استبدال RS256 بـHS256، وهذا هو السبب في أن التحقق من التوقيع يجب أن يتم عبر مكتبات مُدقَّقة لا عبر كود مكتوب يدويًا.

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

هل يتحقّق فك الترميز من أن الرمز صالح؟

لا — فك الترميز يقرأ المحتوى فقط. التحقق من التوقيع يتطلب مفتاح التوقيع أو المفتاح العام وهذا من مسؤولية خادمك. يستطيع أي شخص صياغة رمز بأي حمولة يريدها؛ التوقيع وحده يثبت الأصالة.

هل من الآمن لصق رمز إنتاج حقيقي هنا؟

الأداة لا تُرسل الرمز أبدًا إلى أي مكان — فك الترميز يتم محليًا. مع ذلك، عامل رموز الإنتاج معاملة كلمات المرور: يُفضَّل استخدام رموز منتهية الصلاحية أو تجريبية عند التصحيح في بيئات مشتركة.

لماذا يفشل فك ترميز رمزي؟

تأكد من أنك نسخت الأجزاء الثلاثة المفصولة بنقاط كاملةً ومن عدم تسلل أي فواصل أسطر. الرموز المشفّرة (JWE، خمسة أجزاء) لا يمكن قراءتها دون المفتاح — تتعامل هذه الأداة مع الرموز الموقّعة (JWS)، وهي النوع الشائع.

ما الفرق بين رمز JWS ورمز JWE؟

JWS (JSON Web Signature) هو الصيغة الموقّعة التي تفكّ هذه الأداة ترميزها — ثلاثة أجزاء، قابلة للقراءة لكن يمكن كشف أي تلاعب فيها. أما JWE (JSON Web Encryption) فله خمسة أجزاء والحمولة نفسها مشفّرة، بحيث لا يمكن قراءتها إطلاقًا دون مفتاح فك التشفير؛ فإذا لم يُفكّ ترميز رمزك هنا وكان يحتوي على أربع نقاط بدل نقطتين، فمن المرجح جدًا أنه JWE.

ماذا تعني المطالبات exp وiat وnbf؟

الثلاثة كلها طوابع زمنية يونكس (ثوانٍ منذ 1970-01-01). يسجّل iat وقت إصدار الرمز، ويحدّد nbf أقرب لحظة يصبح فيها صالحًا، ويحدّد exp اللحظة التي يتوقف فيها عن كونه صالحًا. الخادم الذي يعمل بشكل صحيح يرفض أي رمز يقع فيه الوقت الحالي خارج نطاق nbf-exp.

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة