รหัสข้อผิดพลาด

การนำ DAT ไปใช้จะมอบรหัสข้อผิดพลาดที่เสถียรแยกต่างหากจากข้อความที่มนุษย์อ่านได้ โปรแกรมจะไม่เปรียบเทียบสตริงข้อความ แต่จะตัดสินการทำงานจากรหัสและการจำแนกการลองใหม่

วิธีอ่าน

text
DAT_<ขอบเขต>_<สาเหตุ>
คำนำหน้าขอบเขต
DAT_TOKEN_สตริง DAT และการหมดอายุ
DAT_CERT_สตริงใบรับรองและสถานะ
DAT_SIG_ลายเซ็นและการตรวจสอบ
DAT_CRYPTO_การเข้ารหัสและการถอดรหัส
DAT_KEY_รูปแบบคีย์และสิทธิ์
DAT_MANAGER_ตัวจัดการใบรับรอง
DAT_CONFIG_อาร์กิวเมนต์การเรียกและการกำหนดค่า
DAT_INTERNAL_ฟังก์ชันภายในรันไทม์
DAT_CMS_การซิงค์ไคลเอนต์ CMS
DAT_AUTH_, DAT_REQ_, DAT_STORE_เซิร์ฟเวอร์ CMS

_UNKNOWN ใช้เฉพาะกับข้อผิดพลาดที่ไม่สามารถจัดเข้ารหัสอื่นในแต่ละขอบเขตได้เท่านั้น สาเหตุเดียวกันจะใช้ชื่อเดียวกันแม้จะอยู่คนละขอบเขต

การจำแนกการลองใหม่

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

โทเค็นและใบรับรอง

DAT_TOKEN_MALFORMEDไม่มีผลกระทบถาวร

จำนวนฟิลด์ ตัวเลข หรือการแสดง Base64Url ของ DAT แตกต่างจากข้อกำหนด ให้ทิ้งอินพุต

DAT_TOKEN_EXPIREDไม่มีผลกระทบถาวร

เวลาหมดอายุของ DAT เท่ากับเวลาปัจจุบันหรืออยู่ในอดีต ต้องรับ DAT ใหม่

DAT_CERT_MALFORMEDไม่มีผลกระทบถาวร

โครงสร้างหรือการแสดงฟิลด์ของสตริงใบรับรองไม่ถูกต้อง

DAT_CERT_NOT_FOUNDไม่มีผลกระทบสถานะ

ไม่มีใบรับรองที่ตรงกับ `cid` ของ DAT ให้ตรวจสอบสถานะการซิงค์ใบรับรอง

DAT_CERT_NOT_SYNCEDไม่มีผลกระทบสถานะ

มีความเป็นไปได้ว่าใบรับรองที่จะใช้ยังมาไม่ถึงบริการ ให้ซิงค์ทันทีแล้วพิจารณาอีกครั้ง

DAT_CERT_NOT_YET_VALIDไม่มีผลกระทบสถานะ

ยังไม่ถึงเวลาเริ่มต้นของใบรับรอง ให้ตรวจสอบเวลาระบบและเวลาแจกจ่ายใบรับรอง

DAT_CERT_EXPIREDไม่มีผลกระทบถาวร

ระยะเวลาที่ใช้ใบรับรองตรวจสอบได้สิ้นสุดลงแล้ว

DAT_CERT_DUPLICATEบางส่วนถาวร

มี `cid` เดียวกันซ้ำกันในรายการนำเข้าครั้งเดียว ให้ปฏิเสธการนำเข้าทั้งหมด

ลายเซ็น การเข้ารหัส และคีย์

DAT_SIG_MISMATCHไม่มีผลกระทบถาวรshieldน่าสงสัย

ลายเซ็นไม่ตรงกับเนื้อหา อาจเป็น DAT ที่ถูกดัดแปลงหรือ DAT ที่ลงนามด้วยคีย์อื่น

DAT_CRYPTO_TAG_MISMATCHไม่มีผลกระทบถาวรshieldน่าสงสัย

แท็กการยืนยัน AES-GCM ไม่ตรงกัน ให้ตรวจสอบการดัดแปลงข้อความเข้ารหัสหรือใบรับรองไม่ตรงกัน

DAT_KEY_INVALIDไม่มีผลกระทบถาวร

ความยาว รูปแบบ หรือชุดอัลกอริทึมของคีย์ไม่ถูกต้อง

DAT_SIG_KEY_MISSINGไม่มีผลกระทบถาวร

มีการพยายามออก DAT ด้วยใบรับรองสำหรับตรวจสอบเท่านั้น บริการออกโทเค็นต้องใช้ใบรับรองแบบเต็ม

DAT_SIG_MISMATCH และ DAT_CRYPTO_TAG_MISMATCH คือข้อผิดพลาดที่ API เหตุการณ์ความปลอดภัยสาธารณะจัดประเภทว่าเป็นจริง อินพุตที่ไม่ถูกต้องหนึ่งรายการไม่ใช่เหตุขัดข้องของบริการ แต่หากเกิดซ้ำๆ ให้ถือเป็นเป้าหมายของการเฝ้าสังเกตด้านความปลอดภัย

ตัวจัดการและการกำหนดค่า

DAT_MANAGER_NO_CERTIFICATEบางส่วนสถานะ

ไม่มีใบรับรองในตัวจัดการ ให้นำเข้าใบรับรองหรือซิงค์ CMS ให้เสร็จสิ้น

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEบางส่วนสถานะ

มีใบรับรอง แต่ไม่มีใบรับรองแบบเต็มที่สามารถออกได้ในปัจจุบัน ให้ตรวจสอบการหมดอายุ เวลาเริ่มต้น หรือว่าเป็น verify-only หรือไม่จากห่วงโซ่สาเหตุ

DAT_CONFIG_ARGUMENT_INVALIDไม่มีผลกระทบถาวร

อาร์กิวเมนต์การเรียกหรือค่ากำหนดอยู่นอกช่วงที่อนุญาต

DAT_INTERNAL_UNAVAILABLEร้ายแรงถาวร

แพลตฟอร์มปัจจุบันไม่มีฟังก์ชันเข้ารหัสหรือเครือข่ายที่จำเป็น

ไคลเอนต์ CMS

รหัสความหมายการจัดการทั่วไป
DAT_CMS_URI_INVALIDรูปแบบ URI ของ CMS ผิดพลาดแก้ไขการกำหนดค่า
DAT_CMS_UNAUTHORIZEDการยืนยันตัวตนล้มเหลวแก้ไขโทเค็น
DAT_CMS_FORBIDDENบทบาทไม่มีสิทธิ์ตรวจสอบบทบาทโทเค็น
DAT_CMS_ENDPOINT_NOT_FOUNDไม่มีพาธหรือพาธแตกต่างตรวจสอบที่อยู่และพาธ CMS
DAT_CMS_NETWORKการเชื่อมต่อหรือการส่งล้มเหลวตรวจสอบเครือข่ายแล้วหน่วงเวลาก่อนลองใหม่
DAT_CMS_TIMEOUTเกินกำหนดเวลาปรับเครือข่ายและกำหนดเวลา
DAT_CMS_SERVER_ERRORข้อผิดพลาดของเซิร์ฟเวอร์ CMSตรวจสอบสถานะเซิร์ฟเวอร์แล้วหน่วงเวลาก่อนลองใหม่
DAT_CMS_RESPONSE_INVALIDรูปแบบการตอบกลับที่สำเร็จไม่ถูกต้องตรวจสอบสัญญาระหว่างเซิร์ฟเวอร์และไคลเอนต์
DAT_CMS_VERSION_RESETเวอร์ชันเซิร์ฟเวอร์ย้อนกลับตรวจสอบข้อมูล CMS และสถานะการปรับใช้
DAT_CMS_IMPORT_FAILEDนำใบรับรองที่ได้รับไปใช้ล้มเหลวตรวจสอบห่วงโซ่สาเหตุ
DAT_CMS_STOPPEDใช้ตัวจัดการที่ปิดแล้วสร้างตัวจัดการใหม่หรือแก้ไขลำดับการเรียก

ไลบรารีที่การซิงค์ครั้งแรกเป็นแบบ best-effort จะเก็บข้อผิดพลาดไว้ในฟิลด์ข้อผิดพลาดล่าสุด หากต้องให้การเริ่มต้นล้มเหลว ให้ใช้ API ซิงค์ทันทีซึ่งส่งคืนหรือโยนข้อผิดพลาดโดยตรง

เซิร์ฟเวอร์ CMS

รหัสHTTPความหมาย
DAT_AUTH_UNAUTHORIZED401ไม่มีโทเค็นหรือโทเค็นไม่ถูกต้อง
DAT_AUTH_FORBIDDEN403บทบาทโทเค็นไม่ตรงกับสิทธิ์ของคำขอ
DAT_REQ_ALG_UNSUPPORTED400ชื่ออัลกอริทึมที่ไม่รองรับ
DAT_REQ_NOT_FOUND404·405พาธหรือเมธอดไม่ตรงกัน
DAT_REQ_TOO_LARGE413รหัสสำรองสำหรับกรณีเกินขีดจำกัดเนื้อหาคำขอ
DAT_STORE_UNAVAILABLE503ไม่สามารถใช้ที่เก็บได้ชั่วคราว
DAT_STORE_UNKNOWN500ข้อผิดพลาดที่ไม่ได้จัดประเภทระหว่างประมวลผลที่เก็บ

ปัจจุบันไคลเอนต์ไม่ได้เปิดเผยรหัสเซิร์ฟเวอร์ใน JSON ที่ไม่ใช่ 2xx ตามเดิม แต่จะแปลงสถานะ HTTP เป็นรหัส DAT_CMS_* รหัสข้อผิดพลาดในล็อกเซิร์ฟเวอร์และรหัสข้อผิดพลาดของไคลเอนต์อาจแตกต่างกัน

วิธีตรวจสอบในแต่ละภาษา

สภาพแวดล้อมรหัสข้อผิดพลาดการจำแนกการลองใหม่
Rusterr.code()err.retry()
Godat.Code(err)dat.Retry(err)
JavaScript / TypeScripterror.codeerror.retry
Pythonerror.codeerror.retry
Rubyerror.codeerror.retry
Java / Kotlinerror.codeerror.retry
C#error.Codeerror.Retry
C / C++dat_error_code(error)dat_error_retry(error)

สำหรับข้อผิดพลาดที่มีสาเหตุย่อย ให้ตรวจสอบผ่านห่วงโซ่ข้อยกเว้นหรือ API ค้นหาสาเหตุของแต่ละภาษา