DAT

DAT คือสตริง ASCII ที่คั่นด้วยจุด (.) ฟิลด์จะปรากฏอย่างละหนึ่งครั้งตามลำดับที่กำหนด และลายเซ็นจะยืนยันว่าฟิลด์ก่อนหน้ายังคงเหมือนที่ถูกส่งมาทุกประการ

expire
uint64 (ฐานสิบ)
.
cid
uint64 (ฐานสิบหก)
.
plain
Base64Url
.
secure
Base64Url
.
signature
Base64Url
ลำดับฟิลด์และตัวคั่นเป็นส่วนหนึ่งของข้อกำหนด
text
expire.cid.plain.secure.signature

ฟิลด์

ฟิลด์การแสดงความหมาย
expireเลขฐานสิบของจำนวนเต็มไม่มีเครื่องหมายUnix time ที่ DAT หมดอายุ
cidเลขฐานสิบหกตัวพิมพ์เล็กของจำนวนเต็มไม่มีเครื่องหมายID ใบรับรองที่ใช้ตรวจสอบ
plainBase64Url ไม่มีแพดดิงไบต์ที่ไม่เข้ารหัส
secureBase64Url ไม่มีแพดดิงไบต์ที่ป้องกันด้วยอัลกอริทึมเข้ารหัสของใบรับรอง
signatureBase64Url ไม่มีแพดดิงลายเซ็นของไบต์ ASCII ต้นฉบับของ expire.cid.plain.secure

plain อยู่ในขอบเขตลายเซ็น จึงไม่สามารถดัดแปลงได้ แต่ทุกคนสามารถถอดรหัสได้ ความลับ ข้อมูลส่วนบุคคล และค่าที่ใช้โดยตรงในการตัดสินสิทธิ์ต้องใส่ไว้ใน secure ค่า secure ว่างก็ถือว่าถูกต้อง

การแสดงแบบมาตรฐาน

  • DAT ทั้งหมดต้องเป็น ASCII
  • ตัวเลขต้องแสดงโดยไม่มีเครื่องหมาย ช่องว่าง คำนำหน้า หรือเลข 0 นำหน้าที่ไม่จำเป็น มีเพียงค่า 0 ที่เขียนเป็น 0
  • Base64Url ต้องใช้ชุดอักขระแบบ URL-safe และไม่อนุญาตแพดดิง = หรือช่องว่าง
  • ปฏิเสธ Base64Url ที่ไม่เป็นมาตรฐานซึ่งแสดงไบต์เดียวกันด้วยสตริงหลายแบบ
  • หากจำนวนและลำดับฟิลด์แตกต่างออกไป จะไม่ถือว่าเป็น DAT

กฎเหล่านี้ป้องกันไม่ให้แต่ละการนำไปใช้ยอมรับสตริงที่แตกต่างกันว่าเป็น DAT เดียวกัน

การออก

  1. เลือกใบรับรองที่ออกได้ในปัจจุบัน
  2. สร้าง expire โดยบวก TTL ของใบรับรองเข้ากับเวลาปัจจุบัน
  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 ที่ตรวจสอบแล้วกับคำขอใด