DAT
DAT คือสตริง ASCII ที่คั่นด้วยจุด (.) ฟิลด์จะปรากฏอย่างละหนึ่งครั้งตามลำดับที่กำหนด และลายเซ็นจะยืนยันว่าฟิลด์ก่อนหน้ายังคงเหมือนที่ถูกส่งมาทุกประการ
expire.cid.plain.secure.signatureฟิลด์
| ฟิลด์ | การแสดง | ความหมาย |
|---|---|---|
expire | เลขฐานสิบของจำนวนเต็มไม่มีเครื่องหมาย | Unix time ที่ DAT หมดอายุ |
cid | เลขฐานสิบหกตัวพิมพ์เล็กของจำนวนเต็มไม่มีเครื่องหมาย | ID ใบรับรองที่ใช้ตรวจสอบ |
plain | Base64Url ไม่มีแพดดิง | ไบต์ที่ไม่เข้ารหัส |
secure | Base64Url ไม่มีแพดดิง | ไบต์ที่ป้องกันด้วยอัลกอริทึมเข้ารหัสของใบรับรอง |
signature | Base64Url ไม่มีแพดดิง | ลายเซ็นของไบต์ ASCII ต้นฉบับของ expire.cid.plain.secure |
plain อยู่ในขอบเขตลายเซ็น จึงไม่สามารถดัดแปลงได้ แต่ทุกคนสามารถถอดรหัสได้ ความลับ ข้อมูลส่วนบุคคล และค่าที่ใช้โดยตรงในการตัดสินสิทธิ์ต้องใส่ไว้ใน secure ค่า secure ว่างก็ถือว่าถูกต้อง
การแสดงแบบมาตรฐาน
- DAT ทั้งหมดต้องเป็น ASCII
- ตัวเลขต้องแสดงโดยไม่มีเครื่องหมาย ช่องว่าง คำนำหน้า หรือเลข
0นำหน้าที่ไม่จำเป็น มีเพียงค่า0ที่เขียนเป็น0 - Base64Url ต้องใช้ชุดอักขระแบบ URL-safe และไม่อนุญาตแพดดิง
=หรือช่องว่าง - ปฏิเสธ Base64Url ที่ไม่เป็นมาตรฐานซึ่งแสดงไบต์เดียวกันด้วยสตริงหลายแบบ
- หากจำนวนและลำดับฟิลด์แตกต่างออกไป จะไม่ถือว่าเป็น DAT
กฎเหล่านี้ป้องกันไม่ให้แต่ละการนำไปใช้ยอมรับสตริงที่แตกต่างกันว่าเป็น DAT เดียวกัน
การออก
- เลือกใบรับรองที่ออกได้ในปัจจุบัน
- สร้าง
expireโดยบวก TTL ของใบรับรองเข้ากับเวลาปัจจุบัน - เข้ารหัส
plainเป็น Base64Url - เข้ารหัสลับ
secureด้วยอัลกอริทึมเข้ารหัสของใบรับรอง - ลงนามไบต์ ASCII ที่เชื่อมฟิลด์ก่อนหน้าด้วยจุด
ออกได้เฉพาะภายในช่วงเวลาออกของใบรับรอง start <= now <= start + duration
การตรวจสอบ
- แปลง DAT ตามกฎมาตรฐาน
- ตรวจสอบว่า
expire > nowหรือไม่ กรณีexpire == nowถือว่าหมดอายุ - ค้นหาใบรับรองที่ตรงกับ
cidและตรวจสอบว่าใบรับรองยังใช้ตรวจสอบได้ - ตรวจสอบลายเซ็นของไบต์
expire.cid.plain.secureต้นฉบับ - ยืนยันความถูกต้อง·ถอดรหัส
secureและส่งคืนพร้อมplain
API การแปลงที่ไม่ตรวจสอบลายเซ็นใช้สำหรับการสังเกตหรือวินิจฉัยเท่านั้น ห้ามใช้ผลลัพธ์นั้นในการยืนยันตัวตนหรือมอบสิทธิ์
ความรับผิดชอบนอกขอบเขตข้อกำหนด
DAT ไม่ได้กำหนดที่เก็บผู้ใช้ วิธีล็อกอิน โมเดลสิทธิ์ ส่วนหัวส่งต่อโทเค็น หรือรายการเพิกถอน แอปพลิเคชันเป็นผู้ตัดสินว่าจะอนุญาต payload ที่ตรวจสอบแล้วกับคำขอใด