JWT Token Dijelaskan: Struktur, Keamanan, Praktik Terbaik
JSON Web Token muncul di hampir setiap sistem autentikasi modern. String panjang di header Authorization Anda — eyJhbGciOiJIUzI1NiIs... — adalah JWT, dan memahami apa yang ada di dalamnya serta bagaimana cara kerjanya sangat penting untuk membangun aplikasi yang aman.
Apa Itu JWT?
JWT adalah format token yang ringkas dan aman untuk URL yang membawa klaim (data) antara dua pihak. JWT bersifat mandiri — token itu sendiri menyimpan informasi yang diperlukan untuk memverifikasi keasliannya dan mengekstrak data pengguna, tanpa memerlukan pencarian basis data.
Decode JWT apa pun secara instan dengan JWT Encoder/Decoder kami. Tempel token dan lihat header, payload, dan signature-nya diuraikan.
Struktur JWT: Tiga Bagian
Setiap JWT memiliki tiga bagian yang di-encode Base64URL dan dipisahkan oleh titik:
header.payload.signature
Header
{
"alg": "HS256",
"typ": "JWT"
}
Menentukan algoritma penandatanganan dan tipe token.
Payload
{
"sub": "user123",
"name": "Alex Chen",
"role": "admin",
"iat": 1708963200,
"exp": 1709049600
}
Berisi klaim — data sebenarnya. Klaim standar meliputi sub (subjek), iat (waktu diterbitkan), dan exp (kedaluwarsa).
Signature
Dibuat dengan menandatangani header dan payload yang di-encode menggunakan kunci rahasia. Ini mencegah manipulasi — setiap modifikasi akan membatalkan signature.
Cara Kerja Autentikasi JWT
- Pengguna masuk dengan kredensial
- Server membuat JWT dengan klaim pengguna dan menandatanganinya
- Server mengembalikan JWT ke klien
- Klien mengirim JWT di header Authorization untuk permintaan berikutnya
- Server memverifikasi signature dan mengekstrak klaim — tidak perlu kueri basis data
Praktik Terbaik Keamanan
Selalu Verifikasi Signature
Jangan pernah mempercayai JWT tanpa memverifikasi signature-nya. Decode payload dengan JWT Decoder kami untuk memeriksa token selama pengembangan, tetapi selalu verifikasi secara kriptografis di produksi.
Gunakan Waktu Kedaluwarsa yang Pendek
JWT tidak dapat dicabut setelah diterbitkan (tidak seperti token sesi). Pertahankan waktu kedaluwarsa yang pendek (15-60 menit) dan gunakan refresh token untuk sesi yang lebih lama.
Pilih Algoritma yang Tepat
- HS256 — HMAC dengan SHA-256, kunci simetris. Sederhana, cepat, cocok untuk aplikasi server tunggal
- RS256 — RSA dengan SHA-256, kunci asimetris. Lebih baik untuk sistem terdistribusi di mana beberapa layanan memverifikasi token
- Jangan pernah gunakan "none" — Kerentanan
alg: "none"telah menyebabkan pelanggaran keamanan nyata
Lindungi Kunci Rahasia
Kunci penandatanganan JWT Anda adalah kunci utama sistem autentikasi Anda. Simpan dengan aman, rotasi secara berkala, dan jangan pernah mengeksposnya di kode sisi klien.
Jangan Simpan Data Sensitif di Payload
Payload JWT di-encode Base64, bukan dienkripsi. Siapa pun dapat mendekodenya. Jangan pernah menyertakan kata sandi, nomor kartu kredit, atau rahasia.
Kesalahan Umum JWT
- Tidak memvalidasi kedaluwarsa — Selalu periksa klaim
exp - Menyimpan JWT di localStorage — Rentan terhadap serangan XSS. Gunakan cookie httpOnly sebagai gantinya
- Token berukuran besar — JWT dikirim di setiap header permintaan. Jaga payload tetap ringkas
- Tidak menggunakan HTTPS — JWT yang dikirim melalui HTTP dapat disadap
Pertanyaan yang Sering Diajukan
Bisakah saya mencabut JWT?
Tidak secara langsung — JWT bersifat stateless. Solusi alternatif meliputi waktu kedaluwarsa pendek, daftar hitam token, atau mengubah kunci penandatanganan (yang membatalkan semua token).
Haruskah saya menggunakan JWT untuk sesi?
JWT bekerja dengan baik untuk autentikasi API dan layanan mikro. Untuk sesi web tradisional, sesi sisi server dengan cookie sering kali lebih sederhana dan lebih aman.
Apa perbedaan JWT dengan OAuth?
OAuth adalah kerangka kerja otorisasi. JWT adalah format token. OAuth dapat menggunakan JWT sebagai access token, tetapi keduanya memecahkan masalah yang berbeda.
Sumber Terkait
- Base64 Encoding Dijelaskan — pahami encoding yang digunakan JWT
- Memahami Keamanan JWT — pembahasan lebih mendalam tentang kerentanan
- JWT Encoder/Decoder — decode dan buat JWT secara instan
- Hash Generator — jelajahi algoritma di balik signature JWT