JWT Decoder

JWT Decoder / Encoder

Dekode JSON Web Token apa pun untuk melihat header, payload, dan tanda tangannya — atau tandatangani yang baru dengan HS256/384/512. Memverifikasi tanda tangan HMAC secara lokal. 100% di browser Anda.

JWT Decoder / Encoder — TL;DR

Dekode JSON Web Token apa pun untuk melihat header, payload, dan tanda tangannya — atau tandatangani yang baru dengan HS256/384/512. Memverifikasi tanda tangan HMAC secara lokal. 100% di browser Anda.

Tidak. Seluruh alat ini adalah JavaScript di dalam halaman ini. Tempel token, dekode terjadi di browser Anda, byte-nya tidak pernah meninggalkan tab. Buka DevTools → Network dan amati — tidak ada permintaan yang dikirim selama dekode atau verifikasi. Itu membuatnya aman untuk menempelkan token pelanggan atau produksi yang sebenarnya.

Itu membuktikan token ditandatangani oleh seseorang yang memegang secret (HMAC) atau kunci privat (RSA/ECDSA). Itu TIDAK mengenkripsi payload — header dan payload hanyalah JSON yang di-encode base64url, siapa pun dengan token tersebut dapat membacanya. Tanda tangan hanya menghentikan pemalsuan: jika Anda mengubah satu byte saja dari payload, tanda tangan tidak akan cocok lagi.

JWT sering membawa ID pengguna, email, scope, dan terkadang ekuivalen cookie sesi — persis data yang TIDAK boleh Anda tempelkan ke server orang asing. Decoder iKit berjalan sebagai JavaScript yang sudah dimuat di tab browser Anda. Dapat diverifikasi di DevTools → Network: tidak ada fetch, tidak ada XHR, tidak ada beacon selama dekode atau verifikasi.

Header

Payload

Tanda tangan

Klaim standar


            

Verifikasi tanda tangan HMAC

Untuk token HS256/384/512, ketik secret penandatanganan untuk memverifikasi tanda tangan secara lokal. Untuk RS256/ES256 (RSA/ECDSA), gunakan pustaka sisi server — verifikasi kunci publik membutuhkan file PEM yang tidak kami terima di sini.

Mengapa iKit JWT Decoder

Cara tercepat untuk men-debug JWT — tanpa unggah, tanpa daftar, tanpa pihak ketiga di antara Anda dan token Anda.

Tiga panel, satu tempel

Tempel JWT, lihat header, payload, dan tanda tangan yang didekode bersebelahan. Klaim standar (iss, sub, aud, exp, iat) diberi cap waktu dan label.

Verifikasi HMAC lokal

Untuk token HS256/384/512, ketik secret untuk memverifikasi tanda tangan menggunakan API Web Crypto browser. Secret tidak pernah meninggalkan tab Anda.

Tandatangani token Anda sendiri

Beralih ke mode Encode, edit header dan payload sebagai JSON, pilih algoritma, ketik secret, dan dapatkan token yang ditandatangani secara instan.

Privasi sejak desain

Payload JWT berisi ID pengguna, email, kadang scope — jangan pernah menempelkannya ke alat sisi server. Decoder iKit berjalan sebagai JavaScript di browser Anda. Dapat diverifikasi di DevTools → Network.

Kesadaran kedaluwarsa

Klaim standar seperti exp, nbf, iat disorot dengan tanggal yang mudah dibaca dan badge KEDALUWARSA / valid yang jelas sehingga Anda dapat melihat sekilas apakah token masih berlaku.

Standar terbuka, kode terbuka

Dibangun di atas API Web Crypto dan parser JSON bawaan browser — algoritma yang sama dengan OpenSSL, libjwt, jose. Perilakunya cocok dengan setiap pustaka JWT modern.

Bagaimana dekode JWT sebenarnya bekerja

JWT adalah tiga segmen JSON yang di-encode base64url dipisahkan oleh titik — itu saja.

  1. 1

    Pisahkan pada dua titik

    JWT terlihat seperti aaa.bbb.ccc. Kami memisahkan pada dua titik literal, menghasilkan header, payload, dan tanda tangan yang ter-encode. Jika kami tidak mendapatkan tepat tiga bagian, token tersebut salah bentuk.

  2. 2

    Dekode Base64URL setiap bagian

    Header dan payload adalah JSON UTF-8 yang di-encode base64url. Base64URL = Base64 dengan -/_ alih-alih +//= dan tanpa padding. Kami menjalankan atob setelah mengganti karakter kembali, lalu JSON.parse string yang dihasilkan.

  3. 3

    Render dengan struktur

    Header memberi tahu kami algoritma (alg: HS256, RS256, dll.) dan tipe. Payload berisi klaim — yang standar (iss, sub, aud, exp, iat, nbf, jti) ditambah field kustom apa pun. Kami menampilkan masing-masing dalam bagian berlabel.

  4. 4

    Verifikasi (HMAC saja)

    Untuk HS256/384/512, kami menghitung ulang HMAC dari header.payload menggunakan secret yang Anda ketik dan membandingkannya dengan tanda tangan di segmen ketiga. Sama dengan HMAC(SHA-256, secret, signing_input) yang di-encode base64url. Cocok = tanda tangan valid.

Tugas debugging JWT yang umum

Situasi nyata di mana Anda akan membutuhkan JWT decoder.

Memeriksa token dari penyedia auth Anda

Auth0, Firebase, Keycloak, AWS Cognito semuanya mengembalikan JWT setelah login. Tempel access_token untuk melihat klaim apa yang sebenarnya diterima aplikasi Anda — apa ID pengguna, scope apa, kapan kedaluwarsa?

Men-debug 401 Unauthorized

API menolak permintaan Anda? Dekode token untuk memeriksa: apakah kedaluwarsa (exp di masa lalu)? Apakah klaim audience (aud) sesuai dengan yang diharapkan API? Apakah issuer (iss) tenant yang benar?

Memverifikasi tanda tangan webhook

Stripe, GitHub Apps, Slack mengirim payload webhook yang ditandatangani sebagai JWT. Setelah menerimanya, tempel ke mode Dekode beserta secret bersama untuk mengonfirmasi bahwa permintaan benar-benar berasal dari mereka.

Membuat token uji

Butuh JWT yang ditandatangani baru untuk uji integrasi? Beralih ke mode Encode, edit payload (ID pengguna kustom, kedaluwarsa kustom), pilih HS256 + secret uji Anda, dapatkan token dalam milidetik. Tanpa round-trip backend.

Mengapa dekode JWT lokal itu penting

JWT sering membawa ID pengguna, email, scope, dan terkadang ekuivalen cookie sesi — persis data yang TIDAK boleh Anda tempelkan ke server orang asing. Decoder iKit berjalan sebagai JavaScript yang sudah dimuat di tab browser Anda. Dapat diverifikasi di DevTools → Network: tidak ada fetch, tidak ada XHR, tidak ada beacon selama dekode atau verifikasi.

  • Nol permintaan jaringan selama dekode atau verifikasi — dapat diverifikasi di DevTools.
  • Secret yang Anda ketik untuk verifikasi tetap di memori browser dan dihapus saat Bersihkan / refresh.
  • Aman untuk token produksi, token akses pelanggan, dan secret webhook.

Panduan terkait

Tutorial mendalam dan perbandingan alat dari blog iKit.

Pertanyaan yang Sering Diajukan

Apakah ini aman? Apakah JWT saya diunggah?

Tidak. Seluruh alat ini adalah JavaScript di dalam halaman ini. Tempel token, dekode terjadi di browser Anda, byte-nya tidak pernah meninggalkan tab. Buka DevTools → Network dan amati — tidak ada permintaan yang dikirim selama dekode atau verifikasi. Itu membuatnya aman untuk menempelkan token pelanggan atau produksi yang sebenarnya.

Apa yang sebenarnya diverifikasi oleh tanda tangan JWT?

Itu membuktikan token ditandatangani oleh seseorang yang memegang secret (HMAC) atau kunci privat (RSA/ECDSA). Itu TIDAK mengenkripsi payload — header dan payload hanyalah JSON yang di-encode base64url, siapa pun dengan token tersebut dapat membacanya. Tanda tangan hanya menghentikan pemalsuan: jika Anda mengubah satu byte saja dari payload, tanda tangan tidak akan cocok lagi.

Mengapa payload yang didekode terlihat baik tetapi verifikasi gagal?

Tiga penyebab umum: (1) secret salah — secret JWT peka huruf besar/kecil dan ketidakcocokan spasi apa pun merusak verifikasi. (2) Algoritma tidak cocok — header mengatakan HS256 tetapi secret digunakan dengan HS512 awalnya. (3) Token diubah setelah ditandatangani — bahkan satu byte merusak tanda tangan. Periksa apakah header.alg sesuai dengan yang Anda harapkan.

Bagaimana dengan RS256, ES256, dan algoritma kunci publik lainnya?

iKit saat ini hanya mendukung verifikasi HMAC (HS256/384/512). RS256 dan ES256 menggunakan kriptografi kunci publik — verifikasi membutuhkan kunci publik penerbit dalam format PEM, yang membutuhkan UI yang lebih kompleks. Untuk saat ini, dekode tetap berfungsi (bagian header/payload/signature ditampilkan dengan benar), tetapi tombol Verifikasi akan memberi tahu Anda bahwa itu tidak didukung. Verifikasi RSA/ECDSA sedang direncanakan.

Apa bedanya dengan jwt.io?

Ide yang sama, default yang berbeda. Decoder iKit berjalan sepenuhnya di browser Anda (jwt.io juga begitu, tetapi kode iKit terbuka untuk view-source dan domain kami tidak memiliki pelacak pihak ketiga). Kami menambahkan badge KEDALUWARSA / valid yang jelas untuk klaim exp, catatan klaim terstruktur (iat / nbf / iss / sub / aud / jti sebagai baris yang mudah dibaca), dan tombol salin-semua-yang-didekode yang memberi Anda output terstruktur lengkap untuk ditempel ke laporan bug.