Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reverse Verify

Microservice Autentikasi dengan Metode Verifikasi Terbalik via WhatsApp & Email


Ringkasan

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.

Detail Konsep →


Arsitektur

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 →


API Endpoints

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 →


Keamanan

  • 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-256 header untuk webhook WhatsApp

Detail Keamanan →


Database

Tabel Deskripsi
users Akun user
sessions Session JWT
verification_codes Kode verifikasi (+ phantom)
verification_attempts Tracking percobaan gagal

Detail Skema →


Memulai Development

docker compose up -d                    # PostgreSQL
cp .env.example .env                    # Konfigurasi
go run ./cmd/migrate/                   # Migrasi
go run .                                # Server (port 8080)

Detail Setup & Testing → · Environment Variables →

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages