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
DAT_<area>_<penyebab>| Prefiks | Area |
|---|---|
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
| Klasifikasi | Arti | Penanganan |
|---|---|---|
| Sementara | Dapat berhasil setelah keadaan eksternal pulih | Coba lagi secara terbatas setelah backoff |
| Keadaan | Dapat berhasil setelah sinkronisasi sertifikat atau waktu berubah | Perbarui keadaan yang diperlukan lalu coba lagi |
| Permanen | Percobaan ulang dengan input yang sama tetap gagal | Perbaiki input, konfigurasi, atau kode |
Token dan sertifikat
DAT_TOKEN_MALFORMEDJumlah bidang, angka, atau representasi Base64Url pada DAT tidak sesuai spesifikasi. Buang input tersebut.
DAT_TOKEN_EXPIREDWaktu kedaluwarsa DAT sama dengan atau lebih awal dari waktu saat ini. DAT baru diperlukan.
DAT_CERT_MALFORMEDStruktur string sertifikat atau representasi bidangnya tidak benar.
DAT_CERT_NOT_FOUNDTidak ada sertifikat yang sesuai dengan `cid` DAT. Periksa keadaan sinkronisasi sertifikat.
DAT_CERT_NOT_SYNCEDSertifikat yang diperlukan mungkin belum sampai ke layanan. Lakukan sinkronisasi segera lalu nilai kembali.
DAT_CERT_NOT_YET_VALIDWaktu mulai sertifikat belum tiba. Periksa waktu sistem dan waktu distribusi sertifikat.
DAT_CERT_EXPIREDPeriode sertifikat dapat digunakan untuk verifikasi telah berakhir.
DAT_CERT_DUPLICATE`cid` yang sama muncul berulang dalam satu daftar impor. Seluruh impor ditolak.
Tanda tangan, enkripsi, dan kunci
DAT_SIG_MISMATCHTanda tangan tidak sesuai dengan isi. DAT mungkin telah diubah atau ditandatangani dengan kunci lain.
DAT_CRYPTO_TAG_MISMATCHTag autentikasi AES-GCM tidak cocok. Periksa kemungkinan perubahan ciphertext atau ketidakcocokan sertifikat.
DAT_KEY_INVALIDPanjang, format, atau kombinasi algoritme kunci tidak valid.
DAT_SIG_KEY_MISSINGAda 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_CERTIFICATEManajer tidak memiliki sertifikat. Impor sertifikat atau selesaikan sinkronisasi CMS.
DAT_MANAGER_NO_ISSUABLE_CERTIFICATESertifikat 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_INVALIDArgumen pemanggilan atau nilai konfigurasi berada di luar rentang yang diizinkan.
DAT_INTERNAL_UNAVAILABLEFungsi kriptografi atau jaringan yang diperlukan tidak tersedia pada platform ini.
Klien CMS
| Kode | Arti | Penanganan umum |
|---|---|---|
DAT_CMS_URI_INVALID | Format URI CMS tidak valid | Perbaiki konfigurasi |
DAT_CMS_UNAUTHORIZED | Autentikasi gagal | Perbaiki token |
DAT_CMS_FORBIDDEN | Peran tidak memiliki izin | Periksa peran token |
DAT_CMS_ENDPOINT_NOT_FOUND | Path tidak ada atau berbeda | Periksa alamat dan path CMS |
DAT_CMS_NETWORK | Koneksi atau transfer gagal | Periksa jaringan lalu lakukan backoff |
DAT_CMS_TIMEOUT | Timeout | Sesuaikan jaringan dan timeout |
DAT_CMS_SERVER_ERROR | Kesalahan server CMS | Periksa keadaan server lalu lakukan backoff |
DAT_CMS_RESPONSE_INVALID | Format respons berhasil tidak valid | Periksa kontrak server dan klien |
DAT_CMS_VERSION_RESET | Versi server bergerak mundur | Periksa data CMS dan keadaan deployment |
DAT_CMS_IMPORT_FAILED | Gagal menerapkan sertifikat yang diterima | Periksa rantai penyebab |
DAT_CMS_STOPPED | Menggunakan manajer yang sudah berhenti | Buat 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
| Kode | HTTP | Arti |
|---|---|---|
DAT_AUTH_UNAUTHORIZED | 401 | Token tidak ada atau tidak valid |
DAT_AUTH_FORBIDDEN | 403 | Peran token tidak sesuai dengan izin permintaan |
DAT_REQ_ALG_UNSUPPORTED | 400 | Nama algoritme tidak didukung |
DAT_REQ_NOT_FOUND | 404·405 | Path atau metode tidak cocok |
DAT_REQ_TOO_LARGE | 413 | Kode yang dicadangkan untuk batas isi permintaan terlampaui |
DAT_STORE_UNAVAILABLE | 503 | Penyimpanan tidak tersedia sementara |
DAT_STORE_UNKNOWN | 500 | Kesalahan 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
| Lingkungan | Kode kesalahan | Klasifikasi percobaan ulang |
|---|---|---|
| Rust | err.code() | err.retry() |
| Go | dat.Code(err) | dat.Retry(err) |
| JavaScript / TypeScript | error.code | error.retry |
| Python | error.code | error.retry |
| Ruby | error.code | error.retry |
| Java / Kotlin | error.code | error.retry |
| C# | error.Code | error.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.