Basic Auth dengan Node.js Express
Basic Authentication adalah skema autentikasi yang sederhana dan umum digunakan untuk melindungi sumber daya web. Dalam skema ini, pengguna mengirimkan kredensial (username dan password) dalam header permintaan HTTP. Server kemudian memvalidasi kredensial ini dan memberikan akses ke sumber daya jika valid.
Dalam tutorial ini, kita akan belajar bagaimana mengimplementasikan Basic Authentication pada aplikasi Node.js Express.
Langkah 1: Persiapan
-
Buat proyek Node.js:
mkdir basic-auth-example cd basic-auth-example npm init -y
-
Instal dependensi:
npm install express
-
Buat file
app.js
:const express = require('express'); const app = express(); // ... (Code akan diisi di langkah selanjutnya) app.listen(3000, () => { console.log('Server berjalan di port 3000'); });
Langkah 2: Implementasi Basic Authentication
-
Tambahkan middleware Basic Authentication:
const express = require('express'); const app = express(); // Middleware Basic Authentication app.use('/protected', (req, res, next) => { const authHeader = req.headers.authorization; if (!authHeader) { return res.status(401).send('Authentication required'); } const [user, password] = Buffer.from(authHeader.split(' ')[1], 'base64').toString().split(':'); // Validasi kredensial if (user === 'admin' && password === 'password') { next(); // Jika kredensial valid, lanjutkan ke route berikutnya } else { return res.status(401).send('Invalid credentials'); } }); // Route yang dilindungi app.get('/protected', (req, res) => { res.send('Selamat datang di area terlindungi!'); }); app.listen(3000, () => { console.log('Server berjalan di port 3000'); });
Kode ini menambahkan middleware yang akan dijalankan untuk setiap permintaan ke route
/protected
. Middleware ini memeriksa headerAuthorization
untuk kredensial Basic Authentication. Jika header tidak ditemukan atau kredensial tidak valid, permintaan akan ditolak dengan status 401 (Unauthorized). -
Menguji Basic Authentication:
Anda dapat menguji Basic Authentication dengan menggunakan tools seperti Postman atau curl. Untuk mengirim permintaan HTTP dengan kredensial Basic Authentication, Anda perlu menambahkan header
Authorization
dengan format:Basic <base64 encoded credentials>
.Contoh dengan curl:
curl -i -H "Authorization: Basic YWRtaW46cGFzc3dvcmQ=" http://localhost:3000/protected
Kode
YWRtaW46cGFzc3dvcmQ=
adalah username:password (admin:password) yang diencode dengan base64.
Langkah 3: Menyimpan Kredensial
Contoh di atas menyimpan kredensial secara hardcode di dalam kode. Dalam aplikasi produksi, Anda harus menyimpan kredensial secara aman, misalnya dengan menggunakan:
- Database: Simpan username dan password dalam database dan gunakan query untuk memvalidasi kredensial.
- File Konfigurasi: Simpan kredensial dalam file konfigurasi terpisah dan akses file tersebut dari kode.
- Variable Environment: Gunakan variable environment untuk menyimpan kredensial secara terpisah dari kode.
Kesimpulan
Basic Authentication adalah metode sederhana untuk melindungi sumber daya web. Namun, untuk aplikasi yang lebih kompleks, disarankan untuk menggunakan metode autentikasi yang lebih aman seperti OAuth2 atau JWT.