Lewati ke konten utama

2FA Security (Backoffice Admin)

Sebagai pemegang kendali utama infrastruktur Cloud, sangat disarankan agar seluruh staf Admin (Support, Sales, Super Admin) mengaktifkan pengamanan ekstra berupa Two-Factor Authentication (2FA).

Berbeda dengan 2FA Customer, modul 2FA untuk Admin memiliki fitur khusus bernama Force Disable yang hanya bisa diakses oleh Super Admin untuk mengatasi situasi darurat (seperti Admin yang kehilangan ponsel Authenticator miliknya).

Diagram Alur Verifikasi 2FA (Login Admin)


1. Alur Aktivasi 2FA (Setup)

Proses ini dilakukan saat Admin sedang login dan mengakses halaman Profil mereka.

1A. Membangkitkan Kode Rahasia (Generate)

Sistem Backend akan membuatkan Shared Secret spesifik.

Request
POST /api/backoffice/auth/profile/2fa/generate-code
Authorization: Bearer <JWT_TOKEN>

Respons (200 OK): Akan merespons dengan URI Authenticator yang biasanya dirender menjadi QR Code di Frontend Backoffice, agar Admin dapat memindainya menggunakan Google Authenticator.

1B. Konfirmasi Aktivasi (Enable)

Admin wajib membuktikan bahwa aplikasi Authenticator mereka sudah berjalan dengan memasukkan 6 digit kode yang berputar.

Request
POST /api/backoffice/auth/profile/2fa/enable
Authorization: Bearer <JWT_TOKEN>

(Kirimkan code di dalam body JSON).

Kondisi & Tindakan:

  • Sukses: Status keamanan akun Admin berubah. Sistem akan mengembalikan daftar 10 Recovery Codes. Frontend wajib memaksa Admin untuk mengunduh/menyalin kode-kode ini sebelum menutup modal.

2. Alur Login (Verifikasi 2FA)

Jika 2FA aktif, endpoint Login biasa tidak akan langsung mengembalikan JWT, melainkan merespons dengan kode khusus (status butuh 2FA). Admin lalu diarahkan ke halaman input kode.

Request (Verify TOTP)
POST /api/backoffice/auth/2fa/verify-code

(Gunakan endpoint ini untuk memasukkan 6 digit Authenticator).

Request (Verify Recovery)
POST /api/backoffice/auth/2fa/verify-recovery

(Gunakan endpoint ini jika Admin menggunakan 1 dari 10 kode pemulihan statis).


3. Manajemen Lanjutan

Menonaktifkan Mandiri (Disable)

Admin dapat menonaktifkan keamanan mereka sendiri asalkan mereka memiliki akses JWT aktif.

Request
POST /api/backoffice/auth/profile/2fa/disable
Authorization: Bearer <JWT_TOKEN>

Force Disable 2FA (Kewenangan Super Admin)

Skenario darurat: Seorang Admin bernama Budi kehilangan ponsel cerdasnya dan secarik kertas berisi Recovery Codes miliknya terbakar. Budi sama sekali tidak bisa masuk ke Backoffice.

Super Admin (dengan izin tingkat tinggi) dapat mengeksekusi fitur ini untuk mencabut paksa keamanan 2FA Budi, sehingga Budi dapat login hanya menggunakan kata sandi biasa.

Request
PATCH /api/backoffice/2fa/force-disable
Authorization: Bearer <JWT_SUPER_ADMIN>
Content-Type: application/json
Request Body
{
"admin_id": 42
}

Kondisi & Tindakan:

  • Sukses (200 OK): 2FA Budi dimatikan secara instan.
  • Error (403 Forbidden): Hanya Super Admin yang diperbolehkan memanggil fungsi berbahaya ini. Jika Customer Support mencobanya, sistem akan menolaknya dengan tegas.