DAT

DAT یک رشته ASCII جداشده با نقطه (.) است. فیلدها هر یک یک‌بار و به ترتیب مشخص می‌آیند و امضا بررسی می‌کند که فیلدهای پیشین دقیقاً همان‌گونه که ارسال شده‌اند باقی مانده باشند.

expire
uint64 (دهدهی)
.
cid
uint64 (شانزدهی)
.
plain
Base64Url
.
secure
Base64Url
.
signature
Base64Url
ترتیب فیلدها و جداکننده بخشی از مشخصات‌اند.
text
expire.cid.plain.secure.signature

فیلدها

فیلدنمایشمعنا
expireعدد دهدهی صحیح بدون علامتزمان Unix انقضای DAT
cidعدد شانزدهی حروف کوچک و بدون علامتشناسه گواهی برای راستی‌آزمایی
plainBase64Url بدون paddingبایت‌های رمزگذاری‌نشده
secureBase64Url بدون paddingبایت‌های محافظت‌شده با الگوریتم رمز گواهی
signatureBase64Url بدون paddingامضای بایت‌های ASCII اصلی expire.cid.plain.secure

plain در محدوده امضاست و قابل دستکاری نیست، اما هر کس می‌تواند آن را رمزگشایی کند. اسرار، اطلاعات شخصی و مقادیری را که مستقیماً در تصمیم مجوز به‌کار می‌روند در secure قرار دهید. secure خالی هم معتبر است.

قواعد متعارف‌سازی

  • کل DAT باید ASCII باشد.
  • اعداد بدون علامت، فاصله، پیشوند و صفرهای ابتدایی غیرضروری نمایش داده می‌شوند. فقط مقدار 0 به‌صورت 0 نوشته می‌شود.
  • Base64Url از الفبای URL-safe استفاده می‌کند و padding با = یا فاصله مجاز نیست.
  • نمایش Base64Url غیرمتعارف که همان بایت‌ها را با چند رشته نمایش می‌دهد، رد می‌شود.
  • اگر تعداد یا ترتیب فیلدها متفاوت باشد، رشته DAT نیست.

این قواعد مانع می‌شوند پیاده‌سازی‌های مختلف، رشته‌های متفاوت را DAT یکسانی بدانند.

صدور

  1. گواهی‌ای را انتخاب کنید که در حال حاضر قابل صدور است.
  2. TTL گواهی را به زمان فعلی اضافه کنید تا expire ساخته شود.
  3. plain را به Base64Url رمزگذاری کنید.
  4. secure را با الگوریتم رمز گواهی رمزگذاری کنید.
  5. بایت‌های ASCII حاصل از اتصال فیلدهای پیشین با نقطه را امضا کنید.

صدور فقط در بازه صدور گواهی، یعنی start <= now <= start + duration، ممکن است.

راستی‌آزمایی

  1. DAT را طبق قواعد متعارف تجزیه کنید.
  2. بررسی کنید که expire > now باشد. expire == now منقضی است.
  3. گواهی مطابق cid را بیابید و قابلیت راستی‌آزمایی آن را بررسی کنید.
  4. امضای بایت‌های اصلی expire.cid.plain.secure را راستی‌آزمایی کنید.
  5. secure را اصالت‌سنجی و رمزگشایی کرده و همراه plain بازگردانید.

API تجزیه‌ای که امضا را راستی‌آزمایی نمی‌کند، فقط برای مشاهده یا عیب‌یابی است. از نتیجه آن برای احراز هویت یا اعطای مجوز استفاده نکنید.

مسئولیت‌های خارج از مشخصات

DAT مخزن کاربر، روش ورود، مدل مجوز، هدر انتقال توکن یا فهرست ابطال را تعیین نمی‌کند. این برنامه است که تصمیم می‌گیرد payload راستی‌آزمایی‌شده برای کدام درخواست مجاز است.