Kode kesalahan ​

Implementasi DAT menyediakan kode kesalahan yang stabil selain pesan yang dapat dibaca manusia. Program harus menentukan perilaku berdasarkan kode dan klasifikasi percobaan ulang tanpa membandingkan string pesan.

Cara membacanya ​

text
DAT_<area>_<penyebab>
PrefiksArea
DAT_TOKEN_String DAT dan kedaluwarsa
DAT_CERT_String dan keadaan sertifikat
DAT_SIG_Tanda tangan dan verifikasi
DAT_CRYPTO_Enkripsi dan dekripsi
DAT_KEY_Format dan izin kunci
DAT_MANAGER_Manajer sertifikat
DAT_CONFIG_Argumen pemanggilan dan konfigurasi
DAT_INTERNAL_Fungsi internal runtime
DAT_CMS_Sinkronisasi klien CMS
DAT_AUTH_, DAT_REQ_, DAT_STORE_Server CMS

_UNKNOWN hanya digunakan untuk kesalahan yang tidak dapat diklasifikasikan dengan kode lain dalam area tersebut. Penyebab yang sama menggunakan nama yang sama meskipun areanya berbeda.

Klasifikasi percobaan ulang ​

KlasifikasiArtiPenanganan
SementaraDapat berhasil setelah keadaan eksternal pulihCoba lagi secara terbatas setelah backoff
KeadaanDapat berhasil setelah sinkronisasi sertifikat atau waktu berubahPerbarui keadaan yang diperlukan lalu coba lagi
PermanenPercobaan ulang dengan input yang sama tetap gagalPerbaiki input, konfigurasi, atau kode

Token dan sertifikat ​

DAT_TOKEN_MALFORMEDTanpa dampakPermanen

Jumlah bidang, angka, atau representasi Base64Url pada DAT tidak sesuai spesifikasi. Buang input tersebut.

DAT_TOKEN_EXPIREDTanpa dampakPermanen

Waktu kedaluwarsa DAT sama dengan atau lebih awal dari waktu saat ini. DAT baru diperlukan.

DAT_CERT_MALFORMEDTanpa dampakPermanen

Struktur string sertifikat atau representasi bidangnya tidak benar.

DAT_CERT_NOT_FOUNDTanpa dampakKeadaan

Tidak ada sertifikat yang sesuai dengan `cid` DAT. Periksa keadaan sinkronisasi sertifikat.

DAT_CERT_NOT_SYNCEDTanpa dampakKeadaan

Sertifikat yang diperlukan mungkin belum sampai ke layanan. Lakukan sinkronisasi segera lalu nilai kembali.

DAT_CERT_NOT_YET_VALIDTanpa dampakKeadaan

Waktu mulai sertifikat belum tiba. Periksa waktu sistem dan waktu distribusi sertifikat.

DAT_CERT_EXPIREDTanpa dampakPermanen

Periode sertifikat dapat digunakan untuk verifikasi telah berakhir.

DAT_CERT_DUPLICATESebagianPermanen

`cid` yang sama muncul berulang dalam satu daftar impor. Seluruh impor ditolak.

Tanda tangan, enkripsi, dan kunci ​

DAT_SIG_MISMATCHTanpa dampakPermanenshieldMencurigakan

Tanda tangan tidak sesuai dengan isi. DAT mungkin telah diubah atau ditandatangani dengan kunci lain.

DAT_CRYPTO_TAG_MISMATCHTanpa dampakPermanenshieldMencurigakan

Tag autentikasi AES-GCM tidak cocok. Periksa kemungkinan perubahan ciphertext atau ketidakcocokan sertifikat.

DAT_KEY_INVALIDTanpa dampakPermanen

Panjang, format, atau kombinasi algoritme kunci tidak valid.

DAT_SIG_KEY_MISSINGTanpa dampakPermanen

Ada upaya menerbitkan DAT dengan sertifikat khusus verifikasi. Layanan penerbit memerlukan sertifikat lengkap.

DAT_SIG_MISMATCH dan DAT_CRYPTO_TAG_MISMATCH merupakan kesalahan yang diklasifikasikan benar oleh API peristiwa keamanan publik. Satu input tidak valid bukan berarti layanan gagal, tetapi kejadian berulang harus diamati sebagai kemungkinan peristiwa keamanan.

Manajer dan konfigurasi ​

DAT_MANAGER_NO_CERTIFICATESebagianKeadaan

Manajer tidak memiliki sertifikat. Impor sertifikat atau selesaikan sinkronisasi CMS.

DAT_MANAGER_NO_ISSUABLE_CERTIFICATESebagianKeadaan

Sertifikat tersedia, tetapi tidak ada sertifikat lengkap yang saat ini dapat menerbitkan. Periksa kedaluwarsa, waktu mulai, atau keadaan verify-only pada rantai penyebab.

DAT_CONFIG_ARGUMENT_INVALIDTanpa dampakPermanen

Argumen pemanggilan atau nilai konfigurasi berada di luar rentang yang diizinkan.

DAT_INTERNAL_UNAVAILABLEKritisPermanen

Fungsi kriptografi atau jaringan yang diperlukan tidak tersedia pada platform ini.

Klien CMS ​

KodeArtiPenanganan umum
DAT_CMS_URI_INVALIDFormat URI CMS tidak validPerbaiki konfigurasi
DAT_CMS_UNAUTHORIZEDAutentikasi gagalPerbaiki token
DAT_CMS_FORBIDDENPeran tidak memiliki izinPeriksa peran token
DAT_CMS_ENDPOINT_NOT_FOUNDPath tidak ada atau berbedaPeriksa alamat dan path CMS
DAT_CMS_NETWORKKoneksi atau transfer gagalPeriksa jaringan lalu lakukan backoff
DAT_CMS_TIMEOUTTimeoutSesuaikan jaringan dan timeout
DAT_CMS_SERVER_ERRORKesalahan server CMSPeriksa keadaan server lalu lakukan backoff
DAT_CMS_RESPONSE_INVALIDFormat respons berhasil tidak validPeriksa kontrak server dan klien
DAT_CMS_VERSION_RESETVersi server bergerak mundurPeriksa data CMS dan keadaan deployment
DAT_CMS_IMPORT_FAILEDGagal menerapkan sertifikat yang diterimaPeriksa rantai penyebab
DAT_CMS_STOPPEDMenggunakan manajer yang sudah berhentiBuat manajer baru atau perbaiki urutan pemanggilan

Pustaka dengan sinkronisasi awal best-effort menyimpan kesalahan dalam bidang kesalahan terakhir. Jika startup harus gagal, gunakan API sinkronisasi langsung yang mengembalikan atau melempar kesalahan secara langsung.

Server CMS ​

KodeHTTPArti
DAT_AUTH_UNAUTHORIZED401Token tidak ada atau tidak valid
DAT_AUTH_FORBIDDEN403Peran token tidak sesuai dengan izin permintaan
DAT_REQ_ALG_UNSUPPORTED400Nama algoritme tidak didukung
DAT_REQ_NOT_FOUND404·405Path atau metode tidak cocok
DAT_REQ_TOO_LARGE413Kode yang dicadangkan untuk batas isi permintaan terlampaui
DAT_STORE_UNAVAILABLE503Penyimpanan tidak tersedia sementara
DAT_STORE_UNKNOWN500Kesalahan yang tidak terklasifikasi saat memproses penyimpanan

Saat ini klien tidak menampilkan kode server dalam JSON non-2xx apa adanya, tetapi mengubah status HTTP menjadi kode DAT_CMS_*. Karena itu, kode pada log server dan kode kesalahan klien dapat berbeda.

Cara memeriksa menurut bahasa ​

LingkunganKode kesalahanKlasifikasi percobaan ulang
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)

Kesalahan yang memiliki penyebab di bawahnya dapat diperiksa melalui rantai pengecualian atau API untuk mengambil penyebab pada setiap bahasa.