DAT
DAT سلسلة ASCII ذات حقول تفصل بينها نقاط (.). يظهر كل حقل مرة واحدة بترتيب ثابت، ويؤكد التوقيع أن الحقول السابقة نُقلت كما هي تمامًا.
expire.cid.plain.secure.signatureالحقول
| الحقل | التمثيل | المعنى |
|---|---|---|
expire | تمثيل عشري لعدد صحيح غير موقّع | Unix time الذي تنتهي عنده صلاحية DAT |
cid | تمثيل ست عشري بأحرف صغيرة لعدد صحيح غير موقّع | معرّف الشهادة المستخدمة للتحقق |
plain | Base64Url بلا padding | بايتات غير مشفّرة |
secure | Base64Url بلا padding | بايتات محمية بخوارزمية التشفير في الشهادة |
signature | Base64Url بلا padding | توقيع بايتات ASCII الأصلية لـ expire.cid.plain.secure |
يدخل plain ضمن نطاق التوقيع، فلا يمكن تعديله، لكن يمكن لأي شخص فك ترميزه. ضع الأسرار والبيانات الشخصية والقيم المستخدمة مباشرة في قرار الصلاحيات داخل secure. ويُعد secure الفارغ صالحًا أيضًا.
الصيغة المعيارية
- يجب أن يكون DAT كاملًا بصيغة ASCII.
- تُمثّل الأعداد بلا إشارة أو مسافات أو بادئة أو أصفار بادئة غير ضرورية. وحدها القيمة
0تُكتب0. - يستخدم Base64Url الأبجدية URL-safe، ولا يسمح بـ padding على شكل
=أو بالمسافات. - تُرفض تمثيلات Base64Url غير المعيارية التي تعبّر عن البايتات نفسها بسلاسل مختلفة.
- إذا اختلف عدد الحقول أو ترتيبها، فالسلسلة ليست DAT.
تمنع هذه القواعد التطبيقات المختلفة من قبول سلاسل مختلفة بوصفها DAT نفسه.
الإصدار
- اختر شهادة قابلة للإصدار حاليًا.
- أضف TTL الخاص بالشهادة إلى الوقت الحالي لإنشاء
expire. - رمّز
plainبصيغة Base64Url. - شفّر
secureباستخدام خوارزمية التشفير في الشهادة. - وقّع بايتات ASCII الناتجة عن وصل الحقول السابقة بنقاط.
لا يمكن الإصدار إلا ضمن فترة إصدار الشهادة: start <= now <= start + duration.
التحقق
- حلّل DAT وفق القواعد المعيارية.
- تحقق من أن
expire > now. إذا كانexpire == nowفقد انتهت الصلاحية. - ابحث عن الشهادة المطابقة لـ
cidوتأكد من أنها صالحة للتحقق. - تحقق من توقيع بايتات
expire.cid.plain.secureالأصلية. - صادق على
secureوفك تشفيره، ثم أعده معplain.
تُستخدم API الخاصة بالتحليل التي لا تتحقق من التوقيع للمراقبة أو التشخيص فقط. ويجب عدم استخدام نتائجها للمصادقة أو منح الصلاحيات.
مسؤوليات خارج المواصفة
لا يحدّد DAT مخزن المستخدمين أو طريقة تسجيل الدخول أو نموذج الصلاحيات أو ترويسة نقل الرمز أو قائمة الإبطال. يقرر التطبيق الطلبات التي يسمح بها بناءً على payload الذي تم التحقق منه.