العربية

أدوات المطور · وحدة فك التشفير JWT

JWT exp وiat وnbf: التاريخ الرقمي هو الثواني وليس المللي ثانية

· كيف يعمل

jwt الطوابع الزمنية تصحيح الأخطاء

JWT عدد الثواني الرقمية المتوافقة مع ساعة المتصفح بالمللي ثانية
الرسم التوضيحي المتجه الأصلي ToolAcre

JavaScript يمنحك ميلي ثانية وJWT يعطيك ثوانٍ، لذا فإن الطوابع الزمنية تخطئ بعامل الألف. يشرح هذا المنشور NumericDate وكيفية قراءة مطالبات الوقت الثلاثة بشكل صحيح.

الرموز المميزة التي لا تنتهي صلاحيتها أبدًا أو تنتهي صلاحيتها قبل وصولها - وهما علامتان لخطأ الوحدات

إن خطأ عامل الألف ينتج عنه أعراض مثيرة. إن توفير JavaScript مللي ثانية حيث يتوقع منتج الرمز المميز أن ثواني العصر يمكن أن يؤدي إلى تأخير انتهاء الصلاحية لآلاف السنين. يمكن أن يؤدي تقسيم قيمة الثواني مرة أخرى إلى وضعها بالقرب من 1970، مما يجعل الرمز المميز الذي تم إصداره حديثًا يبدو منتهي الصلاحية قبل طلبه الشرعي الأول.

يساعد جهاز فك التشفير في الكشف عن المقياس من خلال إظهار المطالبة الرقمية بجانب القراءة ISO. هذه الشاشة تشخيصية فقط. يمكن للمهاجم كتابة أي رقم `exp` أو `iat` أو `nbf` في حمولة غير موقعة أو مزورة، وبالتالي فإن وقت الساعة المحول له سلطة فقط بعد التوقيع والتحقق من صحة السياسة في مكان آخر.

NumericDate في RFC 7519 — ثانية منذ عصر Unix، كرقم JSON، مع السماح بالكسور ولكن نادرًا ما يتم استخدامها

تستخدم مطالبات الوقت JWT تمثيل NumericDate: رقم JSON يحسب الثواني من عصر Unix. يمكن أن تمثل الأرقام الكسرية مواضع ثانوية لأن التنفيذ يضاعف القيمة بـ 1,000 قبل إنشاء التاريخ. ولا يقوم بتقريب رقم محدود صالح إلى عدد صحيح أولاً.

يتعرف ToolAcre على `exp`، و`nbf`، و`iat`، و`auth_time`، و`updated_at` كحقول على شكل وقت للعرض. الثلاثة الأولى فقط هي من بين أوصاف المطالبة المسجلة. يتم حذف نتائج التاريخ غير الرقمية أو اللانهائية أو غير الصالحة بدلاً من عرضها كأوقات ذات معنى، مما يمنع سلسلة مثل "قريبًا" من التنكر كطابع زمني.

Date.now() هي ميلي ثانية - العادة JavaScript التي تنتج انتهاء الصلاحية في المستقبل البعيد

`Date.now()` تُرجع ميلي ثانية، بينما يتم التعبير عن قيمة NumericDate بالثواني. لذلك، يحتاج المنتج الذي يستمد مطالبة من ساعة المتصفح إلى تحويل مقياس واضح، وعادةً ما يتم القسمة على 1,000 قبل تطبيق سياسة التقريب الخاصة به. يقوم مسار القراءة ToolAcre بإجراء الضرب العكسي للعرض فقط.

اجعل تحويل الوحدة مرئيًا في مراجعة الكود. تعتبر القيمة المكونة من ثلاثة عشر رقمًا في `exp` علامة تحذير مفيدة، ولكن عد الأرقام لا يعد تحققًا ولا يمكن أن يحل محل عقد المنتج. سيحاول برنامج فك التشفير تقديم أي مطالبة رقمية محدودة يمكن أن يمثلها JavaScript التاريخ؛ ولا يعيد تفسير المللي ثانية بالثواني بصمت.

exp وnbf وiat — تنتهي صلاحيتها وليس قبلها وتصدر عند، وكيفية تطبيق أداة التحقق لكل منها

`exp` يحدد الوقت الذي يجب على المتحقق بعده ألا يقبل الرمز المميز بموجب سياسته. `nbf` يسمي حدًا لا ينبغي قبوله قبله. `iat` يسجل وقت الإصدار. ToolAcre يقوم بتسمية هذه المعاني ويقارن فقط `exp` و`nbf` بالساعة المرجعية المتوفرة.

الحالة التي تم إرجاعها هي `expired` عندما تكون انتهاء الصلاحية التي تم فك تشفيرها أبكر من الآن، و`future` عندما لا تقع قبل الآن، و`past` لمطالبات الوقت المعروضة الأخرى. هذه التسميات هي ملاحظات حول حساب الحمولة. إنها ليست قرار مصادقة ولا تقيم المُصدر أو الجمهور أو المفتاح أو التوقيع.

إن اختلافات الساعة والمهلة تنتمي إلى المدقق؛ وحدة فك التشفير هذه لا تحدد أيًا منهما

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

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

مثال عملي - تحويل قيمة EXP النموذجية إلى وقت يمكن قراءته بواسطة الإنسان والتحقق منه مقابل IAT

لنفترض أن الحمولة الاصطناعية تحتوي على `iat: 1717243200` و`exp: 1717246800`. الضرب في 1,000 يعطي ISO اللحظتين `2024-06-01T12:00:00.000Z` و `2024-06-01T13:00:00.000Z`. يؤدي طرح قيم الثواني الأولية إلى الحصول على فاصل زمني مدته ساعة واحدة دون خلط المللي ثانية في المتصفح في الحساب.

يصف هذا الحساب ما تقوله الحمولة. ولا يظهر أن المُصدر اختار تلك القيم أو أن الساعة الواحدة مناسبة لأي تطبيق. ToolAcre يطبع الأرقام بشكل جميل، وينشئ UTC صفوف وقد يستدعي تاريخ انتهاء الصلاحية القديم بالنسبة إلى اليوم؛ يجب على المدقق أن يقوم بشكل مستقل بالمصادقة على قواعد القبول الخاصة به وإنفاذها.

ما لا يغطيه هذا — ما إذا كان خادم معين سيقبل الرمز المميز، والذي يعتمد على ساعته وفسحة الوصول؛ جهاز فك التشفير يظهر القيم وليس الحكم

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

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

الوجبات الجاهزة: اقرأ المطالبات، وقم بإجراء العمليات الحسابية - يعرض جهاز فك التشفير ToolAcre JWT exp وiat وnbf حتى تتمكن من التحقق من الوحدات بنفسك

اقرأ المطالبات وقم بإجراء حساب المقياس بشكل متعمد: تصبح ثواني NumericDate JavaScript مللي ثانية فقط عند حد التاريخ. ToolAcre يجعل هذا الضرب واضحًا في المصدر ويعرض قيمة ISO الناتجة، مع تجاهل أنواع الوقت المشوهة بدلاً من تخمين ما قصده مؤلفوها.

اجعل التمييز الأمني ​​واضحًا بنفس القدر. لا يعد عرض `exp` بمثابة إنفاذ لانتهاء الصلاحية، ولا يعد عرض `nbf` بمثابة تحكم في القبول، و`iat` ليس دليلاً على الإصدار. بعد فحص الرمز المميز، استخدم أداة التحقق الموثوقة للمصادقة عليه وتطبيق الساعة الحقيقية للخدمة وسياسة المطالبة.