المطوّرون 🔒 يعمل داخل متصفحك — لا تُرسل أي بيانات

مصحّح JWT

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

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

          
        
الحمولة

        
التوقيع

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

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

يبقى المفتاح والرمز الناتج داخل متصفحك: لا يُرسل أي منهما إلى أي مكان، ولا يظهران في رابط المشاركة.

تصحيح رمز JSON Web Token يجري رفضه

تفشل الرموز بعدد قليل من الطرق، ولا شيء منها ظاهر في الرمز نفسه — فهو ثلاث كتل Base64URL تفصلها نقاط. الصقه هنا فيصير شيئًا يمكن مجادلته: كل حقل في الترويسة وكل مطالبة، في جدول يقول ما فائدة كل منها، مع انتهاء الصلاحية مترجمًا إلى كلمات واضحة، والتوقيع مفحوصًا بأي مفتاح لديك.

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

الأعطال الستة، بالترتيب الذي يوفّر وقتك

ما الذي أخفقكيف يظهر هناالعلاج
انتهت الصلاحيةالسطر فوق الترويسة يقول «انتهت صلاحيته»جدّد الرمز؛ وإن كان الفارق ثوانيَ فافحص الساعات
جمهور خاطئaud يسمّي واجهة أخرىاطلب الرمز للجمهور الذي تتوقعه الواجهة
مُصدِر خاطئiss هو رابط بيئة الاختبار لا الإنتاجوجّه العميل إلى المُصدِر الصحيح، أو الواجهة إلى مُصدِرها
مفتاح خاطئالتحقّق يقول إن التوقيع غير مطابقاستخدم المفتاح الذي وقّعت به الجهة المُصدِرة؛ وانتبه للأسرار بصيغة Base64
خوارزمية خاطئةالترويسة تقول ES256 ومفتاحك من نوع RSAوفّق بين المفتاح والخوارزمية الظاهرة بجانب حقل المفتاح
ليس JWS أصلًاتسمّيه الصفحة JWE من خمسة أجزاءالحمولة مشفَّرة؛ اقرأها حيث يوجد مفتاح فك التشفير

الترتيب مهم. فانتهاء الصلاحية والجمهور لا يحتاجان مفتاحًا ولا تعاون أحد، ويُستبعدان في ثوانٍ؛ أما مطاردة مشكلة توقيع تتبيّن في النهاية أنها aud غير مطابقة فهي الطريقة التي يضيع بها العصر كله.

القراءة ليست تحقّقًا

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

استعمل إذن العرض المفكوك لتكوين فرضية، وزر التحقّق لاختبارها، ولا تدع قرار تخويل في شيفرتك يستند إلى محتوى مفكوك الترميز. ولهذا السبب تحديدًا يطبع تبويب «كود» فحص جانب الخادم بثماني لغات. وإن كان الترميز نفسه هو ما يحيّرك، يشرح الفرق بين Base64 وBase64URL لماذا لا يمكن لصق جزء من JWT في مفكِّك Base64 عادي.

أمور تبدو مشكلات في الرمز وليست كذلك

  • كلمة Bearer منسوخة مع الرمز، أو سطر جديد جاء من الطرفية — كلاهما يغيّر المدخل الموقَّع ويكسر التوقيع.
  • رمز قصّه عارض السجلات. فطول جزء التوقيع ثابت لكل خوارزمية، والرمز المبتور يفشل دائمًا.
  • خدمتان تتشاركان سرًّا وإحداهما تخزّنه بصيغة Base64. علّم السرّ بصيغة Base64 لتحاكي ذلك الجانب.
  • قيمة kid لم تعد موجودة لأن الجهة المُصدِرة دوّرت مفاتيحها؛ فالرمز سليم ومجموعة المفاتيح قديمة.

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

أدلة ذات صلة