Beberapa waktu lalu, saya menghadapi tantangan saat membangun sistem 2FA (Two-Factor Authentication) untuk sebuah aplikasi. Seperti yang k...
Awalnya saya menggunakan API service eksternal untuk generate token tersebut. Tapi di sinilah masalah pertama muncul:
Ketika service down, baik karena koneksi internet atau server bermasalah, pengguna tidak bisa mendapatkan kode 2FA-nya.
Saya mencoba mengatasinya dengan membuat backup server. Strateginya adalah menggunakan 3 server yang dipilih secara acak untuk generate kode. Jika satu mati, bisa pakai yang lain.
Namun muncul lagi masalah:
- Jika keempat server mati bersamaan?
- Beban sumber daya jadi tinggi karena harus maintain banyak server.
- Kompleksitas sistem meningkat.
Solusi yang Lebih Elegan
Saya berpikir, “Apakah mungkin token ini digenerate langsung dari sisi client tanpa bergantung pada server?”
Setelah melakukan riset, saya menemukan library luar biasa ini: 🔗 hectorm/otpauth (GitHub)
Library ini bisa berjalan di frontend maupun backend untuk generate TOTP secara mandiri — tanpa perlu koneksi ke server.
Arsitektur Hybrid yang Saya Terapkan:
Agar tetap andal, saya gabungkan beberapa pendekatan:
- 1 server utama
- 2 backup server
- 1 client-side fallback
Dengan begitu, walau seluruh server mati sekalipun, user tetap bisa generate token dari sisi client.
Contoh Kode (Client Side TOTP Generator):
function generateTOTP(secret) {
const totp = new OTPAuth.TOTP({issuer: 'apipedia',label: 'apipedia22@gmail.com',algorithm: 'SHA1',digits: 6,period: 30,secret: OTPAuth.Secret.fromBase32(secret),});const code = totp.generate();return code;}
Penutup
Solusi ini tidak hanya mengurangi beban server, tapi juga meningkatkan resiliensi sistem secara keseluruhan.
Kadang solusi terbaik bukan dengan menambah kompleksitas, tapi dengan mengubah cara pandang terhadap masalah.
Kalau kamu sedang membangun sistem otentikasi, mungkin pendekatan ini bisa jadi inspirasi 💡
Github: Cloud-Dark/clientside-2fa-generator
Codepen: 2fa generator
Source:
#2FA #Authentication #CyberSecurity #TOTP #DevTips #FrontendSecurity #BackendSecurity #HighAvailability #WebDevelopment #TechLeadership #NodeJS #JavaScript #OpenSource #ResilientSystems
COMMENTS