Cara Membuat Bearer Token: Panduan Teknis & Implementasi Aman

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

MetodeKeamananImplementasiPenggunaan Utama
Bearer Token (JWT)Tinggi (jika HTTPS)Standar OAuth 2.0API Modern, Microservices
Basic AuthRendahBase64 EncodingInternal Testing, Legacy
API KeySedangQuery Param/HeaderPublic API, Sederhana

Langkah-Langkah Implementasi Aman

  1. Gunakan HTTPS: Jangan pernah mengirimkan bearer token melalui koneksi HTTP biasa karena token dapat disadap (man-in-the-middle attack).
  2. Tentukan Masa Berlaku (Expiry): Selalu gunakan klaim exp pada JWT untuk membatasi durasi token.
  3. Penyimpanan Sisi Klien: Hindari menyimpan token di localStorage jika aplikasi rentan terhadap XSS. Gunakan HttpOnly Cookie sebagai alternatif yang lebih aman.
  4. 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 Authorization tidak terpotong atau salah format.
  • Periksa apakah token telah kedaluwarsa (expired).
  • Pastikan secretKey di server sama persis dengan yang digunakan saat penandatanganan token.
  • Cek apakah ada karakter spasi tambahan di antara kata 'Bearer' dan token.