Authentication Is Infrastructure: Membangun Sistem Auth yang Scalable dengan NestJS & Passport
Authentication sering dianggap sekadar fitur: yang penting user bisa login. Padahal di aplikasi modern — dengan web, mobile, admin dashboard, dan berbagai integrasi — authentication adalah infrastruktur. Di artikel ini, kita akan membahas bagaimana merancang starter kit NestJS dengan JWT, Passport.js, dan SSO (Google, Facebook, GitHub) yang sejak awal disiapkan untuk scale, clarity, dan extensibility.

Authentication Bukan Sekadar “Fitur Login”
Di banyak project, authentication sering diperlakukan seperti ini:
- Buat endpoint login
- Simpan token
- Selesai
Selama user bisa masuk, dianggap beres.
Masalahnya, begitu aplikasi mulai berkembang — muncul mobile app, admin dashboard, atau bahkan service lain — auth yang awalnya “cukup” mulai terasa rapuh.
Tiba-tiba:
- Flow login beda-beda
- Token handling tidak konsisten
- Sulit nambah SSO
- Auth logic nyampur dengan business logic
Di titik ini, jelas satu hal:
authentication bukan fitur, tapi infrastruktur.
Masalah Umum Authentication di Aplikasi Modern
Beberapa pain point yang hampir selalu muncul:
- Banyak client, satu backend
Web, mobile, admin — semuanya butuh auth. - Session vs JWT tidak jelas
Sebagian pakai session, sebagian pakai token. - OAuth diimplementasikan setengah-setengah
Logic provider nyampur di controller, sulit dirawat. - Provider token bocor ke frontend
Frontend malah pakai access token dari Google atau GitHub. - Sulit nambah SSO baru
Setiap provider terasa seperti rewrite.
Masalah-masalah ini jarang muncul di awal, tapi hampir pasti muncul saat produk mulai scale.
Studi Kasus: Unified Authentication System
Starter kit ini dibangun berdasarkan satu studi kasus sederhana tapi realistis:
Satu authentication backend yang digunakan oleh banyak platform.
Ciri-cirinya:
- Semua client login ke backend yang sama
- Backend selalu menerbitkan JWT-nya sendiri
- OAuth provider hanya digunakan sebagai identity source
- Frontend tidak peduli user login lewat apa
Tujuannya:
- Konsisten
- Aman
- Mudah dikembangkan
Kenapa NestJS + Passport?
Pilihan stack ini bukan kebetulan.
- NestJS
Modular, opinionated, dan cocok untuk sistem berskala. - Passport.js
Strategy-based authentication engine.
Bukan “library login”, tapi fondasi auth. - JWT
Stateless, scalable, dan cocok untuk multi-platform.
Kombinasi ini memungkinkan kita membangun auth yang:
- Rapi
- Terisolasi
- Mudah diperluas
Filosofi Starter Kit Auth Ini
Starter kit ini dibangun dengan beberapa prinsip utama:
- Authentication logic harus terpusat
- Strategy-based, bukan conditional-based
- Provider-agnostic
- JWT adalah kontrak, bukan sekadar token
Atau singkatnya:
Authentication should be boring — because boring systems scale.
Tidak ada magic. Tidak ada shortcut.
Yang ada adalah struktur yang jelas dan bisa dirawat.
Arsitektur Tingkat Tinggi
Secara garis besar, sistem ini terdiri dari:
- AuthModule sebagai entry point
- AuthService untuk business logic
- Strategies untuk setiap metode auth
- Guards untuk proteksi endpoint
- DTOs sebagai kontrak data
Setiap strategy (Local, JWT, Google, Facebook, GitHub):
- Berdiri sendiri
- Mengikuti pola yang sama
- Mudah ditambah tanpa mengganggu yang lain
Local Auth & SSO: Dua Pintu, Satu Identitas
Starter kit ini mendukung dua cara login utama:
1. Email & Password
- User register
- Password di-hash
- Login menghasilkan JWT
2. SSO (Google, Facebook, GitHub)
- User login via provider
- Backend memvalidasi identitas
- User dibuat atau di-link
- Backend menerbitkan JWT yang sama
Yang penting:
Setelah login berhasil, frontend tidak tahu dan tidak perlu tahu user login lewat apa.
JWT yang diterima selalu konsisten.
Keputusan Security yang Disengaja
Beberapa keputusan penting di starter kit ini:
- Stateless authentication (tanpa session)
- Token memiliki expiration
- Secret & credential berbasis environment
- Provider token tidak diteruskan ke client
- Payload JWT minimal dan aman
Tidak ada kompromi di sisi keamanan, tapi juga tidak berlebihan.
Siapa yang Cocok Menggunakan Starter Kit Ini?
Starter kit ini cocok untuk:
- Backend engineer yang ingin auth rapi sejak awal
- Startup dengan banyak client
- Team yang ingin nambah SSO tanpa stres
- Project yang ingin scale dengan tenang
Kalau kamu pernah berkata:
“Nanti aja auth-nya dibenerin”
Starter kit ini dibuat untuk mencegah kalimat itu muncul lagi.
Bagaimana Starter Kit Ini Akan Berkembang
Auth bukan berhenti di login.
Starter kit ini disiapkan untuk berkembang ke:
- Refresh token
- Role-Based Access Control (RBAC)
- Multi-tenant authentication
- Account linking
- MFA / 2FA
Tanpa perlu rewrite fondasi.
Penutup
Authentication yang baik jarang terlihat.
Tapi authentication yang buruk selalu terasa.
Dengan memperlakukan auth sebagai infrastruktur, bukan fitur, kita bisa membangun sistem yang:
- Konsisten
- Aman
- Mudah dirawat
- Siap berkembang
Starter kit ini tersedia sebagai NestJs-Starter-Kits.
Kalau kamu merasa pendekatan dan struktur yang dibahas di artikel ini relevan,
silakan kunjungi repository-nya, eksplor kodenya, dan beri ⭐ jika terasa membantu.
Dukungan kecil seperti star sangat berarti untuk menjaga project ini tetap berkembang dan konsisten.
🔐🚀 Happy building.