JWT decoder
Berjalan di browser Anda; tidak ada yang diunggah
Baca header dan claim JSON Web Token, lihat kapan token kedaluwarsa, dan cek tanda tangannya dengan secret atau public key Anda.
Token
Verify signature
Paste a token to check its signature against a secret or public key.
No token yet
Apa itu JWT?
JSON Web Token (JWT) adalah cara ringkas dan bertanda tangan untuk mengirim claim antara dua pihak, paling sering dari server autentikasi ke API. Bentuknya tiga string Base64url yang digabung dengan titik, header.payload.signature, dan API biasanya mengharapkannya di header Authorization: Bearer <token>.
Header menjelaskan cara token ditandatangani, misalnya "alg": "HS256" untuk HMAC dengan secret bersama atau RS256 untuk pasangan kunci RSA. Payload berisi claim: yang standar seperti sub (subjek token), iat (kapan diterbitkan), dan exp (kapan kedaluwarsa), ditambah apa pun yang ditambahkan penerbit, seperti role atau scope.
Tanda tangan itulah yang membuat token bisa dipercaya. Penerbit menghitungnya dari header dan payload dengan kuncinya, jadi mengubah satu karakter payload saja akan merusaknya. Payload hanya di-encode, tidak dienkripsi: siapa pun yang memegang token bisa membaca semua claim. Jangan pernah menaruh rahasia di dalamnya, dan perlakukan token itu sendiri seperti password sampai kedaluwarsa.
Cara memakai tool ini
- 1Tempel token ke panel Token, atau pilih salah satu dari Examples. Prefix
Bearer, nama headerAuthorization:, tanda kutip, dan baris baru diabaikan, dan header panel memberi tahu apa yang diabaikan. - 2Header, payload, dan tanda tangan diberi warna di dalam token. Payload dan Header menampilkan setiap bagian sebagai JSON; Claims mendaftar setiap claim beserta artinya, dan menampilkan
iat,nbf, danexpsebagai tanggal di zona waktu Anda, lengkap dengan berapa lama lalu atau lagi. - 3Status bar menampilkan algoritma, kapan token kedaluwarsa atau sudah kedaluwarsa, dan apakah tanda tangan sudah dicek. Peringatan seperti
alg: noneatau tidak adanyaexpdicantumkan di bagian atas Claims. - 4Untuk mengecek tanda tangan, masukkan secret bersama (HS256, HS384, HS512; beralih ke Base64 jika secret-nya di-encode) atau tempel public key penerbit (RS*, PS*, ES*, EdDSA) sebagai PEM, sertifikat X.509, JWK, atau JWK set. Hasilnya muncul saat Anda mengetik.
- 5Jika token tidak bisa di-decode, pesannya menyebut bagian dan karakter mana yang salah; tekan F8 untuk memilihnya.
Pemecahan masalah
- Token ini punya 5 bagian: ini JWE terenkripsi
- Beberapa identity provider menerbitkan token terenkripsi (JWE). Payload-nya hanya bisa dibaca dengan private key penerima, jadi tidak ada decoder yang bisa menampilkannya tanpa kunci itu.
+adalah Base64 standar; JWT memakai Base64url- Token di-encode ulang atau dibuat manual dengan Base64 standar. Bagian JWT memakai
-dan_, bukan+dan/, tanpa padding=. - Tanda tangan tidak cocok dengan secret ini
- Pastikan secret-nya persis sama dengan yang dipakai penerbit, termasuk huruf besar-kecil dan spasi di akhir, dan cek apakah disimpan sebagai Base64; jika ya, ganti format secret ke Base64.
- Ini kunci RSA PKCS#1 (BEGIN RSA PUBLIC KEY)
- Browser hanya mengimpor kunci dalam bentuk SubjectPublicKeyInfo. Konversi dengan
openssl rsa -RSAPublicKey_in -in key.pem -pubout, atau tempel JWK dari endpoint JWKS penerbit sebagai gantinya. - Key set tidak punya kunci dengan kid ini
- Penerbit merotasi kuncinya. Ambil JWK set terbaru dari
jwks_uripenerbit lalu tempel lagi; tool ini memilih kunci yangkid-nya cocok dengan header token.
Pertanyaan umum
Apakah aman menempel token atau secret asli di sini?
Decode dan pengecekan tanda tangan berjalan di browser Anda dengan Web Crypto, dan tidak ada yang dikirim ke mana pun. Token disimpan di session storage tab ini sampai Anda menghapusnya atau menutup tab, jadi tidak hilang saat reload; secret atau kunci yang Anda pakai untuk verifikasi tidak pernah disimpan, dan token tidak pernah dimasukkan ke link. Meski begitu, token yang masih aktif memberi akses sampai kedaluwarsa, jadi lebih baik pakai token uji atau yang sudah kedaluwarsa, dan jangan pernah menempel secret penandatanganan production ke situs yang tidak Anda kendalikan.
Apa arti "Signature verified"?
Artinya header dan payload ditandatangani dengan secret tersebut, atau dengan private key pasangan public key yang Anda berikan. Ini tidak berarti token bisa diterima: API Anda juga harus mengecek exp, nbf, penerbit (iss), dan audiens (aud), serta menentukan algoritma mana yang diterima.
Kenapa alg none berbahaya?
Token dengan "alg": "none" tidak punya tanda tangan, jadi siapa pun bisa menulis token dengan claim apa saja. Library yang tidak sengaja menerimanya membuat penyerang bisa memalsukan token. Server harus menolak token tanpa tanda tangan.
iat, nbf, dan exp dalam format apa?
Detik sejak 1 Januari 1970 UTC (Unix time). Nilai 13 digit adalah milidetik, bug yang umum di penerbit token; tool ini memberi peringatan. Konverter Unix timestamp bisa mengubah nilai-nilai ini menjadi tanggal.
Kenapa token saya ditolak padahal bisa di-decode?
Penyebab umumnya adalah tanda tangan dari kunci lain, aud atau iss yang salah, token dipakai sebelum waktu nbf atau setelah exp, atau jam antar server yang berbeda. Baca response error dari API dan bandingkan claim-claim tersebut.