Decoder JWT
Tempel JSON Web Token dan baca header serta payload-nya sebagai JSON yang rapi, dengan waktu kedaluwarsa dan penerbitan ditampilkan sebagai tanggal, plus keterangan apakah token sedang berlaku. Decoding berlangsung sepenuhnya di browser Anda, hal yang penting ketika token tersebut adalah kredensial aktif.
0 karakter · 0 kata · 0 baris
0 karakter · 0 kata · 0 baris
Berjalan sepenuhnya di tab browser ini. Teks Anda tidak pernah diunggah atau disimpan.
Registered claim
Tujuh nama claim yang didefinisikan dalam RFC 7519 §4.1. Semuanya opsional; waktu dinyatakan dalam detik sejak 1970-01-01 UTC.
| Claim | Arti |
|---|---|
iss | Issuer: pihak yang membuat dan menandatangani token |
sub | Subject: pengguna atau entitas yang menjadi subjek token |
aud | Audience: pihak yang menjadi tujuan token |
exp | Expiration time: tolak token setelah saat ini |
nbf | Not before: tolak token sebelum saat ini |
iat | Issued at: kapan token dibuat |
jti | JWT ID: pengenal unik, digunakan untuk mencegah replay |
Nilai alg yang umum
| Nilai alg | Arti |
|---|---|
HS256 | HMAC dengan SHA-256; satu rahasia bersama menandatangani dan memverifikasi |
RS256 | Tanda tangan RSA PKCS#1 v1.5 dengan SHA-256; kunci privat menandatangani, kunci publik memverifikasi |
PS256 | RSA-PSS dengan SHA-256 |
ES256 | ECDSA pada kurva P-256 dengan SHA-256; tanda tangan pendek |
EdDSA | Tanda tangan Ed25519 atau Ed448 |
none | Token tanpa tanda tangan; server sebaiknya menolaknya |
Isi sebuah JSON Web Token
JWT didefinisikan dalam RFC 7519 (Mei 2015), yang menyarankan agar diucapkan seperti kata bahasa Inggris "jot". Bentuk bertanda tangan yang umum terdiri dari tiga string Base64url yang digabung dengan titik: header.payload.signature. Header menyebutkan algoritma penandatanganan di alg, seperti HS256 atau RS256, dan sering kali ID kunci di kid. Payload berisi claim, yaitu field JSON seperti sub (pengguna), iss (penerbit), aud (penerima yang dituju), serta exp, nbf, dan iat, yang berupa waktu dalam detik sejak 1 Januari 1970 UTC. Decoder mengubah ketiganya ke waktu lokal Anda dan ISO 8601, lalu memberi tahu apakah token sudah kedaluwarsa, belum berlaku, atau masih dalam masa berlakunya.
Base64url adalah encoding, bukan enkripsi, sehingga siapa pun yang memegang token dapat membaca payload-nya persis seperti halaman ini. Jangan pernah menaruh kata sandi, nomor kartu, atau rahasia lain di dalam claim. Token dengan lima bagian yang dipisahkan titik adalah JWE, token terenkripsi; isinya tidak dapat dibaca tanpa kunci, dan decoder akan menyatakannya. Awalan "Bearer " yang tersalin dari header Authorization dihapus secara otomatis.
Mengapa tanda tangan JWT tidak diverifikasi di sini
Tanda tangan membuktikan bahwa header dan payload dibuat oleh pihak yang memegang kunci dan belum diubah sejak itu. Memeriksanya memerlukan kunci tersebut: rahasia bersama untuk algoritma HMAC seperti HS256, atau kunci publik penerbit untuk RS256, ES256, atau EdDSA. Menempelkan rahasia penandatanganan produksi ke halaman web mana pun adalah ide buruk, dan decoder yang berpura-pura menjamin token tanpa kunci itu hanya memberi rasa aman palsu, jadi alat ini menampilkan tanda tangan tetapi tidak memverifikasinya. Anggap apa yang Anda lihat sebagai klaim yang dibuat token, bukan fakta.
Verifikasi seharusnya dilakukan di server Anda, dengan library yang terawat dan algoritma yang diharapkan dikunci. Dua kesalahan historis menjelaskan alasannya: menerima alg "none", yang memungkinkan siapa saja memalsukan token tanpa tanda tangan, dan algorithm confusion, ketika server yang mengharapkan RS256 dikelabui agar memeriksa tanda tangan HS256 dengan kunci publik sebagai rahasia HMAC. Decoder dipakai untuk debugging: melihat claim apa saja yang diterbitkan penyedia, menemukan audience yang salah, atau mengetahui bahwa sesi gagal karena exp lewat semenit yang lalu. Untuk membaca segmen Base64url mentah, gunakan decoder Base64.
Pertanyaan yang sering diajukan
- Apakah aman menempelkan access token asli ke decoder JWT?
- Di halaman ini token tidak pernah keluar dari browser Anda. Namun, token yang valid berfungsi seperti kata sandi sampai kedaluwarsa, jadi utamakan token kedaluwarsa atau token uji, dan jauhkan token aktif dari tangkapan layar dan obrolan.
- Mengapa token JWT saya tampil kedaluwarsa padahal baru diterbitkan?
- Periksa jam perangkat Anda terlebih dahulu. Sebagian penerbit memberi access token masa berlaku hanya beberapa menit, dan token yang disalin dari log mungkin lebih lama dari kelihatannya. Nilai exp yang ditulis dalam milidetik alih-alih detik berakibat sebaliknya dan jatuh ribuan tahun ke depan.
- Bisakah orang lain mengubah payload JWT saya?
- Mereka bisa mengedit dan meng-encode ulang, tetapi tanda tangannya tidak akan cocok lagi. Server yang memverifikasi tanda tangan dengan kunci dan algoritma yang benar akan menolak token yang diubah.
- Apa perbedaan JWS dan JWE?
- JWS (RFC 7515) ditandatangani, terdiri dari tiga bagian, dan dapat dibaca siapa saja. JWE (RFC 7516) dienkripsi, terdiri dari lima bagian, dan hanya pemegang kunci yang dapat membaca payload-nya.
- Apakah logout membuat JWT tidak berlaku?
- Tidak dengan sendirinya. JWT bertanda tangan tetap berlaku sampai exp kecuali server menyimpan denylist atau memeriksa catatan sesi, itulah sebabnya access token biasanya diberi masa berlaku singkat.