Decode JWT: Baca Header, Payload, dan Masa Berlaku Token
Alat ini memecah JSON Web Token menjadi header dan payload, lalu menampilkan keduanya sebagai JSON berindentasi begitu Anda menempelkan token. Klaim waktu seperti exp diberi tanggal lokal yang mudah dibaca di sebelahnya, dan sebuah lencana menunjukkan apakah token sudah kedaluwarsa. Memeriksa tanda tangan bersifat opsional. Token dibaca di browser Anda dan tidak pernah diunggah.
Decode JWT online langkah demi langkah
- Tempel token ke kolom JSON Web Token. Blok header dan payload langsung muncul, tidak ada tombol decode yang perlu ditekan.
- Lihat lencana status di atas hasil: apakah token sudah kedaluwarsa, belum berlaku, atau tidak punya masa berlaku, serta kondisi tanda tangannya.
- Pilih Salin header atau Salin payload untuk menyalin blok itu sebagai JSON biasa. Catatan tanggal tidak ikut tersalin.
- Pilih Hapus untuk mengosongkan kolom dan memulai dengan token lain.
Anda bisa menempelkan token apa adanya: awalan "Authorization: Bearer", tanda kutip di sekelilingnya, dan pemisah baris akan dibuang, jadi menyalin dari header permintaan, baris log, atau respons JSON tetap berfungsi. Kolom ini menerima hingga 100.000 karakter. Angka besar dan teks dalam bahasa lain di dalam klaim ditampilkan persis, dan nilai yang panjang dibungkus ke baris berikutnya.
Isi header dan payload JWT
JWT terdiri dari tiga bagian base64url yang dihubungkan titik: header.payload.signature. Dua bagian pertama hanyalah JSON yang dikodekan, itulah sebabnya JWT bisa dibaca tanpa secret apa pun. Klaim yang paling sering Anda temui:
iss: issuer, pihak yang membuat tokensub: subject, siapa yang dibicarakan tokenaud: audience, untuk siapa token ditujukanexp: waktu kedaluwarsanbf: tidak berlaku sebelum waktu iniiat: waktu penerbitanjti: ID unik token
Header biasanya berisi alg (algoritma penandatanganan), typ, dan kadang kid, ID kunci yang dipakai menandatangani.
Token JWT expired atau masih berlaku?
exp, iat, nbf, dan auth_time adalah timestamp Unix dalam detik. Alat ini menuliskan masing-masing sebagai tanggal dan jam lokal di samping angkanya, sehingga Anda bisa membacanya tanpa mengonversi. Lencana di atas hasil memakai jam perangkat Anda:
- Dari klaim
exp, lencana menunjukkan sudah berapa lama token kedaluwarsa atau berapa lama lagi token berlaku. - Jika
exptidak ada, tampil Tanpa masa berlaku: token tidak memiliki klaim exp. - Jika
nbfmasih di masa depan, token ditandai belum berlaku.
Memeriksa tanda tangan dengan secret atau kunci publik
Decode menunjukkan isi token, tetapi hanya tanda tangan yang membuktikan token tidak diubah. Di bawah hasil ada Verifikasi tanda tangan (opsional). Biarkan Algoritma pada deteksi otomatis, yang membaca alg dari token, atau pilih sendiri: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, atau EdDSA. Lalu tempel kunci ke Secret atau kunci publik:
- secret biasa untuk algoritma HS, dipakai persis seperti yang Anda ketik, tanpa di-decode base64 terlebih dahulu
- kunci publik PEM (
-----BEGIN PUBLIC KEY-----) atau kunci publik RSA dalam format PKCS#1 - sertifikat X.509
- JWK, atau seluruh JWKS, yang kuncinya dipilih berdasarkan
kidtoken
Lencana berubah menjadi Tanda tangan valid atau Tanda tangan tidak valid. Tanpa kunci, lencana tetap Tanda tangan belum diverifikasi. Token yang menyatakan alg none menampilkan Tanpa tanda tangan: token ini tidak bertanda tangan. Jika Anda menempelkan kunci privat, alat ini menolaknya dan meminta kunci publik, satu-satunya yang diperlukan untuk memverifikasi. Pemeriksaan memakai WebCrypto bawaan browser Anda; EdDSA membutuhkan browser yang cukup baru.
Jika token tidak bisa di-decode
Pesan error muncul di bawah kolom dan menyebut bagian yang bermasalah:
- Teks tidak terdiri dari tiga bagian yang dipisah dua titik, dan pesan menyebutkan berapa bagian yang ditemukan.
- Header, payload, atau tanda tangan bukan base64url yang valid, sering karena ada karakter yang hilang saat menyalin.
- Header atau payload bukan teks UTF-8 yang valid, atau bukan JSON yang valid.
- Token dengan lima bagian adalah JWE terenkripsi. Token ini dikenali dan dijelaskan, tetapi tidak bisa dibaca tanpa kunci privat.
Amankah menempelkan token di sini?
Token dan kunci apa pun di-decode dan diperiksa di perangkat Anda. Tidak ada yang diunggah, tidak ada yang disimpan, dan tidak perlu akun. Meski begitu, access token yang masih aktif adalah kredensial, jadi sebisa mungkin pakai token yang sudah kedaluwarsa atau token uji.
Alat ini hanya membaca dan memeriksa token. Alat ini tidak membuat atau menandatangani JWT dan tidak mendekripsi JWE.
Pertanyaan yang sering diajukan
Bisakah JWT di-decode tanpa secret?
Bisa. Header dan payload JWT hanya dikodekan dengan base64url, tidak dienkripsi, sehingga siapa pun yang memegang token bisa membacanya. Tempel ke kolom "JSON Web Token" dan keduanya langsung muncul. Secret atau kunci publik hanya diperlukan untuk memeriksa tanda tangan, yang di sini bersifat opsional.
Bagaimana memeriksa apakah JWT sudah kedaluwarsa?
Tempel token dan baca lencana di atas hasil. Lencana menyebut sudah berapa lama token kedaluwarsa atau berapa lama lagi berlaku, berdasarkan klaim exp. Token tanpa klaim exp menampilkan "Tanpa masa berlaku: token tidak memiliki klaim exp", dan jika nbf masih di masa depan, lencana menandai token belum berlaku.
Bagaimana mengubah nilai exp JWT menjadi tanggal?
Anda tidak perlu mengubahnya. exp adalah timestamp Unix dalam detik, dan alat ini menuliskan tanggal serta jam lokal yang sesuai di sampingnya pada blok "Payload". Hal yang sama dilakukan untuk iat, nbf, dan auth_time.
Bagaimana memeriksa tanda tangan JWT dengan kunci publik?
Di "Verifikasi tanda tangan (opsional)", biarkan "Algoritma" pada deteksi otomatis atau pilih yang dipakai token, lalu tempel kunci publik ke "Secret atau kunci publik". Kunci PEM (-----BEGIN PUBLIC KEY-----), RSA PUBLIC KEY, sertifikat X.509, JWK, atau JWKS semuanya bisa dipakai. Lencana lalu berubah menjadi "Tanda tangan valid" atau "Tanda tangan tidak valid".
Bisakah JWT di-decode secara lokal tanpa mengirimnya ke server?
Bisa, begitulah cara kerja alat ini. Token dipecah, di-decode, dan diperiksa di browser Anda, dan tidak ada yang diunggah atau disimpan. Pemeriksaan tanda tangan memakai WebCrypto browser, jadi token maupun kunci tidak dikirim ke mana pun.
Apa saja yang ada di header dan payload JWT?
Header menjelaskan token, biasanya algoritma penandatanganan (alg), tipe (typ), dan kadang ID kunci (kid). Payload berisi klaim, seperti siapa yang menerbitkannya (iss), siapa yang dibicarakan (sub), untuk siapa (aud), dan kapan kedaluwarsa (exp). Keduanya JSON biasa yang tampil di blok "Header" dan "Payload".
Apa arti alg none pada JWT?
Artinya token menyatakan dirinya tidak bertanda tangan: bagian tanda tangannya kosong dan tidak ada yang bisa diperiksa. Alat ini menampilkan "Tanpa tanda tangan: token ini tidak bertanda tangan". Server tidak boleh menerima token seperti ini sebagai bukti identitas.
Bagaimana cara decode bearer token?
Jika berupa JWT, tempel apa adanya. Awalan "Authorization: Bearer", tanda kutip, dan pemisah baris dibuang untuk Anda, jadi Anda bisa menyalin langsung dari header permintaan atau log. Bearer token opak yang bukan tiga bagian yang dipisah titik tidak bisa di-decode, dan alat ini menyebutkan berapa bagian yang ditemukan.
Bisakah mendekripsi JWE atau membuat dan menandatangani JWT di sini?
Tidak. Token dengan lima bagian adalah JWE dan isinya terenkripsi, sehingga tidak bisa dibaca tanpa kunci privat; alat ini mengenalinya dan memberi tahu, bukan menampilkan error. Alat ini juga tidak membuat, menandatangani, atau mengedit token, hanya membaca dan memeriksanya.