JWT Decoder
Dekode header dan payload JWT, baca exp, iat, dan nbf sebagai tanggal, serta verifikasi signature HS256, RS256, ES256, atau EdDSA di browser Anda.
Token adalah kredensial. Alat ini mendekode dan memverifikasinya di browser Anda dan tidak pernah mengirimkannya ke mana pun.
Header
Payload
| Klaim | Nilai | Tanggal | Status |
|---|
- Algoritme (alg)
- —
- Signature (Base64url)
- —
Verifikasi signature
HS256/384/512: masukkan secret bersama. RS, PS, ES (256/384/512) dan EdDSA: tempel kunci publik sebagai PEM (public key, RSA public key, atau sertifikat) atau JWK (pada JWK Set, kunci dicocokkan berdasarkan kid).
Cara mendekode JWT
- Tempel token ke kolom JSON Web Token. Nilai
Authorization: Bearer …lengkap juga bisa dipakai: awalanBearerdan semua jeda baris akan dihapus. - Token didekode saat Anda mengetik (atau klik Dekode). Header dan Payload tampil sebagai JSON yang rapi, masing-masing dengan tombol Salin sendiri.
- Baca tabel Klaim waktu:
exp,nbf, daniatditampilkan dengan nilai mentahnya, tanggal dalam zona waktu Anda, waktu relatif (“3 jam lagi”, “2 hari yang lalu”), serta status seperti Kedaluwarsa atau Belum berlaku. - Periksa peringatan di atas hasil, misalnya saat
algbernilainoneatau saat sebuah tanggal tampaknya dalam milidetik. - Untuk memeriksa signature, isi kunci di bagian Verifikasi signature lalu klik tombol Verifikasi signature.
Mendekode tidak sama dengan memverifikasi
JWT terdiri dari tiga bagian Base64url yang dipisahkan titik: header.payload.signature. Header dan payload hanya dienkode, bukan dienkripsi, sehingga siapa pun yang memegang token dapat membacanya, dan alat ini bisa mendekode token apa pun tanpa kunci. Artinya, payload yang berhasil didekode tidak membuktikan apa-apa: seseorang bisa saja telah mengubahnya. Hanya signature yang valid yang menunjukkan bahwa token diterbitkan oleh pemegang kunci dan tidak diubah sejak saat itu. Karena itu baris status menampilkan “Terdekode (signature belum diverifikasi).” sampai Anda memverifikasinya.
Token dengan lima bagian adalah JWE (JWT terenkripsi). Isinya tidak dapat dibaca tanpa kunci dekripsi, dan alat ini akan memberi tahu Anda hal tersebut.
Memverifikasi signature
- HS256, HS384, HS512 (HMAC): masukkan Secret bersama. Gunakan Format secret untuk menyatakan apakah secret berupa teks biasa (UTF-8) atau Base64/Base64url, karena sebagian penyedia menyimpan secret dalam Base64. Anda juga bisa menempelkan JWK bertipe
oct. Jika secret lebih pendek daripada keluaran hash (32 byte untuk HS256), alat ini mencatat bahwa secret tersebut di bawah batas minimum RFC 7518. - RS256/384/512, PS256/384/512, ES256/384/512, dan EdDSA: tempel Kunci publik (PEM atau JWK). Blok PEM yang diterima adalah
PUBLIC KEY,RSA PUBLIC KEY, danCERTIFICATE(kunci dibaca dari sertifikat X.509). JWK atau seluruh JWK Set juga bisa: kunci yangkid-nya cocok dengan header akan dipakai. Kunci privat ditolak, karena verifikator tidak pernah membutuhkannya. EdDSA mendukung Ed25519 di browser yang Web Crypto-nya sudah mengimplementasikannya.
Verifikasi memakai Web Crypto API milik browser. Hasil “Signature tidak valid” berarti kuncinya salah atau token telah diubah. Perlu diingat bahwa algoritme diambil dari header token: server sungguhan justru harus menetapkan algoritme yang diharapkan di konfigurasinya, karena jika tidak, penyerang bisa memilihnya sendiri.
Catatan keamanan
- Token adalah kredensial. Siapa pun yang memegang access token yang valid biasanya bisa bertindak sebagai pemiliknya sampai token kedaluwarsa. Alat ini mendekode dan memverifikasi semuanya di browser Anda dan tidak pernah mengirim token atau kunci ke mana pun. Meski begitu, hindari menempelkan token produksi ke alat yang tidak bisa Anda periksa.
alg: noneberarti token tidak ditandatangani. Siapa pun bisa memalsukannya, dan server wajib menolaknya. Alat ini menampilkan peringatan dan menolak “memverifikasi” token seperti itu.- Pemeriksaan waktu di sini memakai jam komputer Anda tanpa toleransi apa pun, sedangkan server sering memberi kelonggaran satu atau dua menit untuk selisih jam.
- Tanggal JWT (NumericDate) dinyatakan dalam detik sejak 1 Januari 1970 UTC. Nilai 13 digit kemungkinan besar dalam milidetik, dan ini bug yang sering terjadi.
Pertanyaan yang sering diajukan
Bisakah alat ini memberi tahu apakah token saya valid?
Alat ini bisa memberi tahu apakah signature cocok dengan kunci yang Anda berikan dan apakah exp serta nbf terpenuhi saat ini. Apakah token diterima juga bergantung pada pemeriksaan yang hanya diketahui server: penerbit yang diharapkan (iss), audiens (aud), algoritme, dan pencabutan token.
Mengapa verifikasi gagal padahal secret-nya benar?
Periksa Format secret: secret Base64 yang diketik sebagai teks menghasilkan kunci yang berbeda. Pastikan juga tidak ada spasi atau jeda baris yang ikut masuk ke secret, karena kunci HMAC dibandingkan byte demi byte.
Apa bedanya RS256, PS256, dan ES256?
Ketiganya adalah signature kunci publik dengan SHA-256. RS256 memakai RSA dengan padding PKCS#1 v1.5, PS256 memakai RSA dengan padding PSS, dan ES256 memakai ECDSA pada kurva P-256, yang menghasilkan signature jauh lebih pendek.
Di mana saya bisa menemukan kunci publik sebuah penyedia?
Penyedia identitas memublikasikan JWKS (JSON Web Key Set), biasanya ditautkan dari /.well-known/openid-configuration pada jwks_uri. Buka sendiri lalu tempel JSON-nya di sini; alat ini memilih kunci berdasarkan kid dan tidak pernah mengambil data dari internet.
Apakah aman menempelkan token saya di sini?
Token tetap di perangkat Anda: dekode dan verifikasi berlangsung secara lokal dan tidak ada yang diunggah. Untuk kehati-hatian ekstra, gunakan token yang sudah kedaluwarsa atau token uji jika Anda hanya perlu memeriksa strukturnya.
Alat terkait
- Generator HMAC Hitung HMAC-SHA1, SHA-256, SHA-384, atau SHA-512 dengan kunci teks, hex, atau Base64, dapatkan hasil hex dan Base64, dan cek signature webhook di browser Anda.
- Encode dan Decode Base64 Encode dan decode Base64 gratis dengan dukungan penuh UTF-8 dan opsi base64url yang aman untuk URL. Berjalan sepenuhnya di browser, tanpa unggahan.
- Konverter Unix Timestamp Konversi Unix timestamp dalam detik atau milidetik ke tanggal yang mudah dibaca dalam waktu lokal, UTC, dan ISO 8601, lalu ubah tanggal kembali ke epoch.
- JSON Formatter dan Validator JSON formatter dan validator gratis untuk merapikan, minify, dan memeriksa JSON di browser Anda, dengan kesalahan sintaksis yang dilaporkan per baris dan kolom.