Belajar 2FA Authentication - Pre-Requisites Skill & Setup Environment
Episode 0 of 23

Belajar 2FA Authentication - Pre-Requisites Skill & Setup Environment

Sebelum membangun fitur 2FA berbasis TOTP, kalian perlu menguasai JavaScript dan TypeScript, autentikasi dasar password session JWT, serta SQL. Di episode ini kalian juga menyiapkan Node.js 24 LTS, menginstall otplib qrcode dan express-rate-limit, lalu memasang Google Authenticator untuk menguji scan dan code.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

Selamat datang di series Belajar 2FA Authentication! Series ini akan membawa kalian menguasai Two-Factor Authentication berbasis TOTP — standar yang dipakai Google Authenticator — dari fondasi konsep sampai deployment production-grade. Total ada 23 episode yang tersusun dari enam fase.

Tapi sebelum menyentuh kode, ada beberapa skill dasar dan perangkat lunak yang wajib kalian miliki. Mengapa prasyarat ini penting? Karena fitur 2FA menyentuh tiga lapis sistem yang berbeda: kriptografi untuk TOTP dan enkripsi secret, web framework untuk alur login, dan database untuk menyimpan secret terenkripsi serta recovery codes. Kalau salah satu lapis belum dipahami, debugging nanti akan terasa seperti membongkar kotak hitam.

Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar, menyiapkan runtime dan package, lalu memverifikasi instalasi pertamanya. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.

Skill Dasar yang Wajib Dikuasai

JavaScript dan TypeScript

Seluruh implementasi series ini memakai JavaScript modern atau TypeScript di Node.js. Kalian wajib nyaman dengan async/await, destructuring, dan module ES. TypeScript sangat disarankan karena otplib 13.x dikirim dengan tipe bawaan — error seperti memanggil metode yang tidak ada akan tertangkap saat kompilasi, bukan saat produksi.

Periksa versi runtime dan package manager kalian:

Cek versi Node dan npm
node --version
npm --version

Pastikan output node --version menampilkan versi mayor 24. Series ini memakai Node.js 24 LTS (Krypton) sesuai versi stabil saat penulisan.

Autentikasi Dasar: Password, Session, dan JWT

Sebelum menambahkan lapisan kedua, kalian harus paham lapisan pertamanya: autentikasi password. Kuasai hashing password dengan bcrypt atau argon2 (jangan pernah menyimpan plaintext), lalu session berbasis cookie HttpOnly atau JWT yang disimpan client. Episode 3 dan 15 akan membedah bagian ini lebih dalam, jadi cukup pastikan kalian pernah membuat login sederhana.

SQL Dasar

Secret TOTP terenkripsi, status totpEnabled, dan recovery codes disimpan di database relasional. Kalian perlu memahami CREATE TABLE, INSERT, UPDATE, dan migrasi. Series ini memakai SQLite untuk lab dan menunjuk PostgreSQL untuk produksi — keduanya cukup familiar untuk developer web.

Perangkat Software yang Disiapkan

Node.js 24 LTS (Krypton) dan npm

Install Node.js 24 LTS dari nodejs.org atau versi LTS bawaan distro kalian. Gunakan npm bawaan agar versi package konsisten. Jangan lupa catat versi karena semua contoh di series ini diuji terhadap runtime tersebut.

Framework: Next.js App Router atau Express 5

Pilih satu framework: Next.js App Router untuk contoh full-stack dengan React, atau Express 5 untuk API yang ringkas dan dekat dengan Node. Keduanya didukung penuh oleh otplib. Contoh di series ini lebih banyak ditulis untuk Express 5 agar fokus ke logika 2FA, tapi semua alur bisa diterjemahkan ke route handler Next.js.

Package untuk 2FA

Install package inti yang akan dipakai sepanjang series:

Install package 2FA
npm install otplib@13.4.1 qrcode@1.5.4 express-rate-limit@7
npm install --save-dev @types/qrcode

otplib@13.4.1 adalah inti TOTP/HOTP yang mengikuti RFC 4226 dan RFC 6238. qrcode@1.5.4 merender QR code untuk enrollment, dan express-rate-limit@7 melindungi endpoint verifikasi dari brute-force.

Database SQLite atau PostgreSQL

Untuk lab, SQLite cukup — satu file, tanpa server. Untuk produksi, pakai PostgreSQL. Koneksi SQLite bisa dibuat tanpa package tambahan lewat driver bawaan Node, atau pakai Prisma untuk kemudahan migrasi. Jangan lupa perbarui .env.local dengan string koneksi.

Menyiapkan Google Authenticator di Smartphone

Install aplikasi Google Authenticator dari Google Play (Android) atau App Store (iOS). Aplikasi ini menjadi client yang memindai QR code dan menghasilkan 6 digit TOTP. Aktifkan juga sinkronisasi waktu otomatis di smartphone kalian — TOTP bergantung pada jam yang akurat, dan ini dibahas detail di episode 2.

Di pengaturan Google Authenticator, aktifkan backup ke Google Account. Fitur ini akan berguna saat kita membahas pemulihan akun di episode 21, dan sekaligus melatih kebiasaan mem-backup authenticator sejak awal.

Verifikasi Instalasi

Uji instalasi dengan skrip kecil yang membuat secret dan kode TOTP:

Verifikasi otplib bekerja
node -e "const { authenticator } = require('otplib'); const s = authenticator.generateSecret(); console.log(s.length, s.slice(0, 4)); console.log(authenticator.generate(s).length);"

Output baris pertama adalah panjang secret Base32 dan empat karakter pertamanya, sedangkan baris kedua menampilkan 6 digit TOTP yang valid. Kalau keduanya muncul tanpa error, instalasi kalian siap.

Struktur Proyek Lab yang Disarankan

Agar contoh di series ini langsung bisa dijalankan, susun proyek dengan struktur sederhana:

Struktur direktori proyek lab
2fa-app/
  package.json
  .env.local
  src/
    server.js
    db.js
    crypto-helper.js
    routes/
      auth.js
      mfa.js
  public/
    index.html

Kunci pemisahan di sini adalah memisahkan crypto-helper.js (logika enkripsi secret) dan routes/mfa.js (endpoint 2FA) dari route auth biasa. Struktur ini akan kita ikuti di seluruh series sehingga setiap episode bisa fokus pada satu file.

Selain struktur, pastikan .env.local sudah diisi sejak awal dengan placeholder untuk variabel yang akan kita isi bertahap: DATABASE_URL, SESSION_SECRET, dan MFA_ENCRYPTION_KEY. Jangan pernah mengisi nilai nyata di file yang ter-commit ke git.

Ringkasan Skill yang Harus Disiapkan

Rangkuman prasyarat yang sudah kalian siapkan di episode 0:

  • JavaScript dan TypeScript: async/await, destructuring, module ES, dan type safety.
  • Autentikasi dasar: hashing password dengan bcrypt atau argon2, session cookie dan JWT.
  • SQL dasar: CREATE TABLE, INSERT, UPDATE, dan migrasi.
  • Node.js 24 LTS dengan npm, framework Express 5 atau Next.js App Router.
  • Package terinstall: otplib 13.4.1, qrcode 1.5.4, express-rate-limit 7.
  • Google Authenticator terpasang dan tersinkronisasi waktu di smartphone.

Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Fondasi yang kuat akan membuat 22 episode berikutnya terasa jauh lebih ringan.

Penutup

Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami skill JavaScript, autentikasi dasar, dan SQL yang dibutuhkan, menyiapkan Node.js 24 LTS, menginstall otplib, qrcode, dan express-rate-limit, serta memasang Google Authenticator untuk uji.

Inti yang harus dibawa pulang:

  • Fitur 2FA menyentuh kriptografi, web framework, dan database sekaligus.
  • Gunakan Node.js 24 LTS dan framework Express 5 atau Next.js App Router.
  • Install otplib 13.4.1, qrcode 1.5.4, dan express-rate-limit 7.
  • Siapkan SQLite untuk lab dan PostgreSQL untuk produksi.
  • Pasang Google Authenticator dan pastikan waktu smartphone tersinkronisasi.
  • Verifikasi otplib dengan skrip generate secret dan code.

Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa kalian membutuhkan 2FA — dari evolusi password menuju passkeys, lahirnya HOTP lewat RFC 4226 dan TOTP lewat RFC 6238, hingga alasan faktor kepemilikan mengalahkan password yang bisa di-credential-stuffing. Pastikan Node.js dan Google Authenticator kalian sudah siap, karena perjalanan Belajar 2FA Authentication baru saja dimulai!