Microservice Autentikasi dengan Metode Verifikasi Terbalik via WhatsApp & Email
Reverse Verify adalah layanan autentikasi yang membalik alur verifikasi tradisional: alih-alih server mengirim kode ke user, server menunggu user mengirim kode kembali — membuktikan kepemilikan kontak tanpa server perlu mengirim apa pun.
main.go → Container (DI) → Handler → Service → Repository → PostgreSQL
Dibangun dengan Go 1.25, Gin, Bun ORM, PostgreSQL 18, JWT HS512, dan bcrypt.
Detail Arsitektur & Teknologi → · Struktur Proyek →
Base path: /api/v1.0
| Method | Path | Deskripsi | Auth |
|---|---|---|---|
GET |
/csrf-token |
Ambil CSRF token | Tidak |
POST |
/wa-register |
Registrasi via WhatsApp | Tidak |
POST |
/email-register |
Registrasi via email | Tidak |
POST |
/login |
Login | Tidak |
POST |
/refresh |
Refresh access token | Cookie |
POST |
/logout |
Hapus semua session | JWT Bearer |
POST |
/whatsapp/ |
Webhook WhatsApp | Tidak |
Detail API → · Alur Registrasi WhatsApp →
- Phantom verification codes — anti-enumeration dengan kode hantu yang tidak bisa dibedakan
- Constant-time response — delay acak 4–8 detik pada endpoint registrasi
- Rate limiting — 5 req/menit per IP (registrasi), 3 pesan/30 detik per sender (webhook)
- Escalating block — 5x gagal → 30m, 10x → 2j, 15x → 24j
- Multi-session — kontrol jumlah session per user via
ALLOW_MULTI_SESSION&MAX_SESSION - CSRF Protection — Double Submit Cookie pattern, aktif di production, no-op di development
- Webhook Signature Verification — validasi HMAC SHA-256 pada
X-Hub-Signature-256header untuk webhook WhatsApp
| Tabel | Deskripsi |
|---|---|
users |
Akun user |
sessions |
Session JWT |
verification_codes |
Kode verifikasi (+ phantom) |
verification_attempts |
Tracking percobaan gagal |
docker compose up -d # PostgreSQL
cp .env.example .env # Konfigurasi
go run ./cmd/migrate/ # Migrasi
go run . # Server (port 8080)