JWT (JSON Web Token) telah menjadi standar de-facto untuk autentikasi berbasis token di aplikasi web modern. Namun, kemudahan penggunaannya sering membuat developer mengabaikan aspek keamanan yang kritis.
Apa Itu JWT?
JSON Web Token adalah standar terbuka (RFC 7519) yang mendefinisikan cara compact dan self-contained untuk mentransmisikan informasi antar pihak sebagai objek JSON. Informasi ini dapat diverifikasi dan dipercaya karena ditandatangani secara digital menggunakan secret (HMAC) atau pasangan kunci publik/privat (RSA atau ECDSA).
Struktur JWT
JWT terdiri dari tiga bagian yang dipisahkan oleh titik (.):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
- Header: Berisi tipe token (JWT) dan algoritma hashing yang digunakan (HMAC SHA256 atau RSA).
- Payload: Berisi klaim (claims) — pernyataan tentang entitas (biasanya user) dan data tambahan.
- Signature: Digunakan untuk memverifikasi bahwa pengirim JWT adalah benar dan memastikan konten tidak diubah.
Cara Kerja Autentikasi JWT
- Pengguna login dengan username dan password.
- Server memverifikasi kredensial dan menghasilkan JWT yang ditandatangani.
- Server mengirimkan JWT kembali ke client.
- Client menyimpan JWT (di localStorage atau httpOnly cookie) dan menyertakannya di setiap request berikutnya sebagai Bearer token.
- Server memvalidasi tanda tangan JWT dan memberikan akses.
Tips Keamanan JWT yang Penting
Kesalahan dalam implementasi JWT bisa berakibat fatal. Berikut praktik terbaik yang harus diikuti:
- Gunakan algoritma yang kuat. Selalu gunakan RS256 atau HS256 untuk produksi. Hindari algoritma "none" yang tidak melakukan verifikasi sama sekali.
- Set waktu kedaluwarsa (exp). Jangan membuat token yang tidak pernah kedaluwarsa. Gunakan access token berumur pendek (15 menit) dengan refresh token.
- Simpan di httpOnly cookie. Menyimpan JWT di localStorage membuat token rentan terhadap serangan XSS. httpOnly cookie lebih aman karena tidak dapat diakses JavaScript.
- Validasi semua klaim. Selalu validasi issuer (iss), audience (aud), dan expiration (exp) di sisi server.
Dekode JWT dengan Mudah
Perlu memeriksa isi token JWT secara cepat? Gunakan JWT Decoder kami. Tool ini mendekode token sepenuhnya di browser Anda tanpa mengirim data ke server, sehingga token sensitif Anda tetap aman.
Kesimpulan
JWT adalah alat yang sangat berguna bila diimplementasikan dengan benar. Pahami strukturnya, terapkan praktik keamanan yang ketat, dan selalu validasi token di sisi server. Jangan pernah mempercayai payload JWT tanpa memverifikasi signature-nya terlebih dahulu.