Standar Autentikasi HMAC-SHA256
Cara mengamankan dan menandatangani permintaan API SmallPict menggunakan tanda tangan kriptografis HMAC-SHA256.
Standar Autentikasi HMAC-SHA256
SmallPict mengamankan seluruh jalur komunikasi API menggunakan tanda tangan kriptografis HMAC-SHA256.
Keunggulan standar ini:
- Integritas Data: Mencegah modifikasi isi body atau path request di tengah jalan (anti-tampering).
- Kebal Replay Attack: Validasi selisih waktu (timestamp drift) menolak request yang ditangkap ulang oleh penyusup.
- Secret Tetap Aman: Secret key tidak pernah dikirimkan melalui jaringan.
📋 Header HTTP Wajib
Setiap request wajib menyertakan 3 header berikut:
X-API-Key: sp_live_9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b
X-Timestamp: 1716301234
X-Signature: 3a9f8b2c4d6e8a0f1b3c5d7e9f2a4b6c8d0e1f3a5b7c9d1e3f5a7b9c1d3e5f7a
| Header | Tipe | Deskripsi |
|---|---|---|
X-API-Key | String | API Key pelanggan Anda (misal sp_live_..., sp_test_..., sp_sdk_...) |
X-Timestamp | String Angka | Waktu Unix timestamp dalam satuan detik saat request dikirim |
X-Signature | Hex String | Hasil kalkulasi tanda tangan HMAC-SHA256 menggunakan Secret Key Anda |
🔐 Algoritma Tanda Tangan
1. Susun String-To-Sign
Gabungkan HTTP method, path, timestamp, dan hash SHA-256 dari request body yang dipisahkan baris baru (\n):
{HTTP_METHOD}\n{PATH}\n{TIMESTAMP}\n{BODY_SHA256_HEX}
- Jika request tidak memiliki body (seperti
GET), gunakan hash SHA-256 dari string kosong:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.
2. Hitung Tanda Tangan
Signature = hex(HMAC_SHA256(SecretKey, StringToSign))
⏱️ Toleransi Selisih Waktu (Timestamp Drift)
SmallPict menerapkan batas toleransi selisih waktu ±300 detik (5 menit). Request dengan selisih waktu lebih besar akan ditolak dengan error 401 Unauthorized (ERR_TIMESTAMP_DRIFT).
