Memahami Bearer Token dalam Autentikasi API
Bearer token adalah string unik yang digunakan dalam protokol HTTP untuk memberikan akses ke sumber daya yang dilindungi. Dalam arsitektur OAuth 2.0, token ini berfungsi sebagai kunci akses (access token) yang dikirimkan melalui header Authorization dengan format Authorization: Bearer <token>. Penting untuk dipahami bahwa bearer token tidak memerlukan kriptografi tambahan pada sisi klien, sehingga keamanan sepenuhnya bergantung pada penggunaan HTTPS dan penyimpanan yang aman.
Metode Pembuatan Token
Secara teknis, bearer token bukanlah sesuatu yang 'dihasilkan' oleh generator acak sederhana, melainkan diterbitkan oleh Authorization Server setelah kredensial pengguna divalidasi. Berikut adalah metode implementasi standar menggunakan JSON Web Token (JWT) yang merupakan standar industri saat ini.
Implementasi Pembuatan JWT (Node.js)
Untuk membuat token, Anda memerlukan pustaka jsonwebtoken. Berikut adalah contoh kode untuk menghasilkan token dengan masa berlaku tertentu:
const jwt = require('jsonwebtoken');
const payload = { userId: 123, role: 'admin' };
const secretKey = 'kunci_rahasia_anda';
const token = jwt.sign(payload, secretKey, { expiresIn: '1h' });
console.log(token);Tabel Perbandingan Metode Autentikasi
| Metode | Keamanan | Implementasi | Penggunaan Utama |
|---|---|---|---|
| Bearer Token (JWT) | Tinggi (jika HTTPS) | Standar OAuth 2.0 | API Modern, Microservices |
| Basic Auth | Rendah | Base64 Encoding | Internal Testing, Legacy |
| API Key | Sedang | Query Param/Header | Public API, Sederhana |
Langkah-Langkah Implementasi Aman
- Gunakan HTTPS: Jangan pernah mengirimkan bearer token melalui koneksi HTTP biasa karena token dapat disadap (man-in-the-middle attack).
- Tentukan Masa Berlaku (Expiry): Selalu gunakan klaim
exppada JWT untuk membatasi durasi token. - Penyimpanan Sisi Klien: Hindari menyimpan token di
localStoragejika aplikasi rentan terhadap XSS. GunakanHttpOnly Cookiesebagai alternatif yang lebih aman. - Validasi di Sisi Server: Setiap permintaan yang masuk wajib memverifikasi tanda tangan (signature) token menggunakan kunci rahasia yang sama.
Troubleshooting Umum
Jika Anda mengalami kendala 401 Unauthorized, periksa hal berikut:
- Pastikan header
Authorizationtidak terpotong atau salah format. - Periksa apakah token telah kedaluwarsa (expired).
- Pastikan
secretKeydi server sama persis dengan yang digunakan saat penandatanganan token. - Cek apakah ada karakter spasi tambahan di antara kata 'Bearer' dan token.