| name | awcms-micro-sync-hmac |
| description | Amankan sinkronisasi offline-online AWCMS-Micro dengan HMAC signature dan anti-replay. Gunakan saat implementasi sync push/pull, verifikasi request node, atau R2 object queue. Sesuai doc 08 & 10. |
AWCMS-Micro — Sync HMAC & Offline Sync
Ikuti docs/awcms-micro/08_sop_operasional_user_guide.md dan docs/awcms-micro/10_template_kode_coding_standard.md.
Signature
signature = HMAC(secret, "<timestamp>.<body>")
Header: X-AWCMS-Micro-Node-ID, X-AWCMS-Micro-Timestamp, X-AWCMS-Micro-Signature.
Aturan validasi
- Signature wajib ada; tolak jika kosong.
- Timestamp valid; max skew default 300 detik (anti replay).
- Timing-safe compare untuk signature.
- Node inactive ditolak.
- Duplicate event idempotent (tidak dobel) — lihat
awcms-micro-idempotency.
- Posted transaction immutable; sync tidak menimpa transaksi posted.
- HMAC secret & R2 credential hanya dari environment.
Alur
sequenceDiagram
participant N as Node
participant S as Server
N->>S: push (Node-ID + Timestamp + Signature + body)
S->>S: cek node aktif · verifikasi HMAC · cek skew · idempotent
S-->>N: ack + checkpoint (atau tolak)
N->>S: pull update
S-->>N: event baru
Note over N,S: Conflict high-risk → resolusi manual + audit
R2 object queue (opsional)
- File lokal disimpan dulu, masuk
awcms_micro_object_sync_queue.
- Upload saat online; checksum diverifikasi; retry aman.
Verifikasi (test)
- HMAC valid diterima; invalid/expired ditolak.
- Duplicate batch idempotent; checkpoint updated.
- Conflict tercatat immutable + audit.