Cara mendekode dan memeriksa token JWT

· 4 menit baca

Token JSON Web Token (JWT) adalah cara paling umum untuk menangani autentikasi dalam aplikasi web modern. Ketika ada yang salah di sisi auth — pengguna keluar tanpa alasan, izin salah, atau API mengembalikan 401 — mendekode JWT sering menjadi langkah debugging pertama.

Apa yang dimuat JWT

JWT memiliki tiga bagian yang dipisahkan oleh titik:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U

Header — berisi algoritma (HS256, RS256, dll.) dan jenis token.

{"alg": "HS256", "typ": "JWT"}

Payload — berisi klaim (pernyataan) tentang pengguna dan token.

{"sub": "1234567890", "name": "Alice", "exp": 1700000000}

Tanda tangan — sidik jari kriptografis yang menjamin token tidak diubah. Anda tidak dapat membacanya tanpa kunci tanda tangan.

Klaim JWT umum

Klaim Nama lengkap Konten
sub Subject ID atau pengenal pengguna
exp Expiration Timestamp Unix akhir validitas
iat Issued At Timestamp Unix pembuatan
iss Issuer Siapa yang membuat token (server auth Anda)
aud Audience Untuk siapa token ditujukan
nbf Not Before Token tidak valid sebelum tanggal ini
jti JWT ID Pengenal unik token

Cara mendekode JWT

  1. Tempel token Anda — masukkan JWT lengkap (format header.payload.tanda_tangan) ke decoder.
  2. Lihat bagian yang didekode — alat menampilkan header (algoritma), payload (klaim), dan tanda tangan sebagai JSON yang diformat.
  3. Verifikasi klaim — periksa tanggal kedaluwarsa, penerbit, subjek, dan klaim kustom apa pun.

Debugging dengan JWT

Token kedaluwarsa? Periksa klaim exp. Konversikan timestamp Unix ke tanggal yang dapat dibaca. Jika sudah lewat, token telah kedaluwarsa dan harus disegarkan.

Izin salah? Cari klaim peran atau cakupan dalam payload. Mereka bervariasi menurut implementasi tetapi sering tampak seperti "role": "admin" atau "scope": "read write".

Masalah identitas pengguna? Klaim sub mengidentifikasi pengguna. Verifikasi bahwa itu cocok dengan ID yang diharapkan.

Token ditolak? Periksa klaim aud (audience). Jika API mengharapkan audience tertentu dan token memiliki audience lain, akan ditolak.

Catatan keamanan penting

Pertanyaan yang sering diajukan

Bisakah saya memverifikasi tanda tangan JWT dengan decoder?

Tidak. Verifikasi tanda tangan memerlukan rahasia tanda tangan atau kunci publik, yang disimpan di server Anda. Decoder menunjukkan apa yang ada di token, tetapi verifikasi kriptografis harus terjadi di backend Anda. Jangan pernah memercayai JWT yang tidak diverifikasi dalam produksi.

Apakah aman menempel JWT ke alat online?

Ya, ketika alat berjalan di peramban Anda. Decoder di peramban memproses token secara lokal — tidak ada yang dikirim ke server. Hindari alat yang membuat permintaan jaringan dengan token Anda.

Apa itu klaim exp?

Klaim exp (expiration) adalah timestamp Unix yang menunjukkan kapan token kedaluwarsa. Setelah tanggal ini, token harus ditolak. Selalu periksa klaim ini untuk men-debug masalah autentikasi.

Bisakah JWT dienkripsi?

JWT standar (JWS) ditandatangani tetapi tidak dienkripsi — siapa pun dapat mendekode payload. Token JWE (JSON Web Encryption) dienkripsi, tetapi kurang umum. Jangan pernah memasukkan data sensitif (kata sandi, rahasia) dalam payload JWT standar.