Mengatasi Ketergantungan Server dalam Sistem 2FA (Two-Factor Authentication)

Beberapa waktu lalu, saya menghadapi tantangan saat membangun sistem 2FA (Two-Factor Authentication) untuk sebuah aplikasi. Seperti yang k...

Beberapa waktu lalu, saya menghadapi tantangan saat membangun sistem 2FA (Two-Factor Authentication) untuk sebuah aplikasi. Seperti yang kita tahu, 2FA berbasis TOTP (Time-based One-Time Password) biasanya menghasilkan kode 6 digit yang berubah setiap 30 detik.

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:


Article content

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

Nama

2fa,2,adsense,3,ai,34,Alat,1,Algorithms,3,Android,29,anti virus,1,Apache,4,api,4,apipedia,3,Aplikasi Android,10,apps,2,AppSheet,40,arang,1,Array,3,array formula,3,Artikel,8,bca,1,Belajar,1,Bengkak,1,Berita,1,Berita terkini,13,Biografi,1,Bisnis,139,Bitcoin,1,Blog,7,Blogger,34,Blogger Template,1,Blogging,2,Bootable,1,bot,1,build with ai,9,build with syahdandev,16,bun.js,1,catlang,1,chat gpt,2,Cheat,1,Chrome,2,cloudflare,1,Code,14,coding,11,collaboration tools,1,Competitive Coding,7,copilot,1,CPU,1,Crud,1,CSS3,2,cybersecurity,8,Data Structures,18,Database,1,decode,1,Deep Learning,3,Desain Blogger,47,Design,3,developer,5,Development,8,Domain Hosting,2,Download,4,dunia kerja,2,Elon Musk,4,enak,1,encode,1,excel,2,express,1,Facebook,2,fact or hoax,1,fastify,1,free,1,Free Course,13,Game,5,Gamers,2,gemini,1,generate with AI,3,generator,1,github,2,google,12,Google AdSense,20,Google Apps Script,25,google calendar,1,google docs,2,google drive,2,google forms,1,google mail,1,google maps,1,Google Script,3,google sheets,15,Google Webmaster Tools,1,Hardware,1,Home,1,hosting,4,Hostinger,1,HP,2,HTML,6,HTML5,2,HyperOs,1,ice cream,1,ide kreatif,2,image creator,2,Indonesia,1,Instagram,2,instant vdeo generator,1,integrator,1,Internet,8,iOS,1,IOT,2,iphone,1,IT,6,JavaScript,7,js,4,Kenali,1,Keren,1,Kesehatan,14,laragon,1,laravel,1,Leet Code,7,library,1,Linked List,4,Linux,8,llama,1,Machine Learning,4,malware,2,map,1,Mark Zuck,1,Marketing Tools,1,marketplace,1,Mata,1,Math,8,mbti,2,McDonald's,1,meme,1,meta,1,mfa,1,Microsoft Word,1,Minimalis,1,miscellaneous questions,1,mixue,1,Mobile Legends,4,Motherboard,1,motivasi,1,murah,1,mysql,5,Neovim,1,Networking,1,next js,1,ngingx,1,NIK,1,NLP,1,no code,5,node js,11,nodejs,1,NPWP,1,obfuscated,1,Office,1,open ai,3,Oppo,1,Parallel Space,1,pc,2,PDF Print,1,pgsql,2,Phoenix OS,1,PHP,16,phpmyadmin,2,portofolio,1,postman,3,Power Point,1,Presentation,1,price list,1,Program Aplikasi,6,programmer,3,programming,1,psikolog,4,python,5,query,1,Quesions or Answers (Quora),2,Questions or Answers (Quora),1,RAR,2,Recursion,3,regex,2,Regulasi,1,Review,147,Rufus,1,Rumus,55,Sakit,1,Samsung,1,Security,1,SEO,21,SHAREit,1,shop,1,simple apps,2,Smart City,1,smartfren,1,Smartphone,1,sms,1,Social Media,1,socket.io,2,Software,2,spesifikasi,1,SQL,1,SQL Server,1,Steemit,7,string,3,team IT,1,Tebak Gambar,2,Technology,4,Teknologi,8,Teknologi Informasi,3,Telegram,3,Template Blog SEO,10,Template Blogger,1,Templates,1,terminal,1,tiktok,1,Tips,22,Tips & Trik,20,Tips Blogging,36,Tips SEO,23,toolkit,1,Tree,8,Trick,27,trik,3,Tulisan Lepas,1,tutorial,6,Tutorial CSS,3,Tutorial HTML,56,Tutorial JavaScript,3,Twitter,2,Ubuntu,5,udemy,7,UX,8,VirtualBox,1,VLC Media Player,1,VSCode,2,waconsole,26,wallpaper engine,1,web dev,2,Web Server,5,WhatsApp,14,WhatsApp Gateway,8,Widget,2,Windows,25,wordpress,4,XAMPP,7,Xiaomi,5,Yii2,1,YouTube,3,
ltr
item
Syahdan Dev Blog: Mengatasi Ketergantungan Server dalam Sistem 2FA (Two-Factor Authentication)
Mengatasi Ketergantungan Server dalam Sistem 2FA (Two-Factor Authentication)
https://blogger.googleusercontent.com/img/a/AVvXsEiFhqQj084_focfO1RCN9S1pTGMHmlgzWscSnxs6zYupNnF6cRq98123uvx2g3rPIPL7ZA7PoqxPoX7QllDnMNMRKfQh97bZFk9i_MrxiTe7eOKn-TPzp847-SrAdPmFBzD72SwLQ_UpJgDO1eXLjgPOrp0otetvLwU7owHo9I6F6IqT7d-fGpML0um-oM
https://blogger.googleusercontent.com/img/a/AVvXsEiFhqQj084_focfO1RCN9S1pTGMHmlgzWscSnxs6zYupNnF6cRq98123uvx2g3rPIPL7ZA7PoqxPoX7QllDnMNMRKfQh97bZFk9i_MrxiTe7eOKn-TPzp847-SrAdPmFBzD72SwLQ_UpJgDO1eXLjgPOrp0otetvLwU7owHo9I6F6IqT7d-fGpML0um-oM=s72-c
Syahdan Dev Blog
https://syahdandev.blogspot.com/2025/06/mengatasi-ketergantungan-server-dalam.html
https://syahdandev.blogspot.com/
https://syahdandev.blogspot.com/
https://syahdandev.blogspot.com/2025/06/mengatasi-ketergantungan-server-dalam.html
true
6341435550051226882
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content