Dekoder JWT
Dekode JSON Web Token apa pun untuk memeriksa header, payload, dan klaimnya dalam bentuk yang mudah dibaca — dan secara opsional memverifikasi tanda tangan HMAC (HS256/384/512). Semuanya tetap di browser Anda.
Cara menggunakan Dekoder JWT
- 1
Tempel token Anda
Tempel JSON Web Token terenkode ke bidang input. Dekoder secara otomatis memecahnya menjadi header, payload, dan tanda tangan.
- 2
Baca klaimnya
Periksa header dan payload yang sudah didekode sebagai JSON terformat, dan tinjau klaim terdaftar seperti waktu kedaluwarsa dan waktu penerbitan yang ditampilkan sebagai tanggal yang mudah dibaca.
- 3
Verifikasi tanda tangan
Untuk token HMAC, masukkan secret penandatanganan untuk memastikan tanda tangan valid dan token belum dirusak.
- 4
Salin yang Anda butuhkan
Salin JSON header atau payload yang terformat ke papan klip Anda untuk dipakai dalam pengujian, dokumentasi, atau debugging.
Memahami JSON Web Token: Anatomi, Klaim, dan Jebakannya
Tiga bagian yang dipisahkan oleh titik
JSON Web Token adalah satu string panjang dengan dua titik di dalamnya, yang membaginya menjadi tiga segmen: header, payload, dan tanda tangan. Masing-masing dari dua segmen pertama adalah objek JSON kecil yang telah dienkode Base64URL — varian Base64 yang aman untuk URL yang menukar beberapa karakter dan menghilangkan padding agar token berpindah dengan mulus di dalam header dan query string. Segmen ketiga adalah tanda tangan, yang dihitung atas kedua bagian pertama.
Tempelkan sebuah token dan dekoder akan memisahkannya pada titik-titik tersebut lalu mendekode Base64URL dua bagian pertama kembali menjadi JSON yang mudah dibaca. Anda melihat header dan payload persis seperti yang ditulis oleh penerbitnya. Alasan mengapa hal ini mungkin sama sekali adalah inti dari semua yang menyusul: segmen-segmen tersebut hanya dienkode, bukan dienkripsi.
Header: algoritme dan tipe
Header adalah bagian terkecil. Ia biasanya mendeklarasikan tipe — JWT — dan, yang lebih penting, algoritme penandatanganan pada field alg-nya. Nilai yang umum adalah HS256, yang menggunakan HMAC dengan secret bersama, serta RS256 atau ES256, yang menggunakan pasangan kunci asimetris di mana kunci privat menandatangani dan kunci publik memverifikasi. Algoritme memberi tahu pemverifikasi bagaimana tanda tangan dihasilkan dan karena itu bagaimana cara memeriksanya.
Field alg juga relevan secara keamanan. Token yang mengaku menggunakan algoritme none, atau penyerang yang menukar token dari algoritme asimetris ke algoritme simetris untuk mengelabui pemverifikasi naif agar memakai kunci publik sebagai secret HMAC, adalah serangan klasik. Pemverifikasi yang benar memaku algoritme yang diharapkan alih-alih membabi buta memercayai apa pun yang dikatakan header.
Payload dan klaim terdaftarnya
Payload membawa klaim — pernyataan yang dibuat oleh token. Sekumpulan nama klaim terdaftar telah distandarkan agar sistem yang berbeda menyepakati maknanya. Klaim penerbit (iss) menyebutkan siapa yang membuat token, klaim subjek (sub) mengidentifikasi tentang siapa atau apa token itu (sering kali ID pengguna), dan klaim audiens (aud) menyebutkan penerima yang dituju. Berdampingan dengan klaim-klaim ini, Anda biasanya akan menemukan klaim aplikasi kustom seperti peran atau tenant.
Dekoder ini menampilkan klaim terdaftar dalam bentuk yang berlabel dan mudah dibaca manusia sehingga Anda tidak perlu mengenali nama singkat yang rumit di luar kepala. Melihat penerbit, subjek, dan audiens dieja jelas sering kali sudah cukup ketika Anda mengamati sebuah token saat debugging untuk memastikan bahwa itu token yang tepat untuk layanan yang tepat.
Klaim waktu: exp, iat, dan nbf
Tiga klaim mengatur masa berlaku sebuah token, dan semuanya adalah Unix timestamp yang diukur dalam detik — bukan milidetik, yang merupakan bug off-by-a-thousand yang kerap menimpa pengembang JavaScript yang terbiasa dengan waktu dalam milidetik. Klaim kedaluwarsa (exp) adalah saat setelahnya token harus ditolak, klaim issued-at (iat) mencatat kapan token dibuat, dan klaim not-before (nbf) menandai saat paling awal token menjadi berlaku.
Dekoder mengubah nilai-nilai ini menjadi tanggal yang mudah dibaca dan memberi tahu Anda apakah token sedang aktif, belum berlaku, atau sudah kedaluwarsa menurut jam perangkat Anda. Detail terakhir itu penting: jika jam komputer Anda salah, putusan aktif-atau-kedaluwarsa bisa menyesatkan, dan di lingkungan produksi selisih jam antarserver adalah alasan yang umum mengapa token yang baru diterbitkan ditolak karena belum berlaku.
Mendekode bukan memverifikasi
Inilah satu hal terpenting yang perlu dihayati. Siapa pun bisa mendekode JWT — itu hanya Base64URL — sehingga membaca klaim hanya memberi tahu Anda apa yang dikatakan token, bukan apakah token itu asli. Kepercayaan hanya datang dari memeriksa tanda tangan terhadap kunci, yang membuktikan bahwa token diterbitkan oleh pihak yang memegang secret atau kunci privat dan belum diubah sejak saat itu.
Untuk token HMAC (HS256, HS384, HS512), alat ini dapat menghitung ulang tanda tangan dari header, payload, dan secret yang Anda berikan lalu membandingkannya dengan tanda tangan token, sehingga memastikan keasliannya untuk secret tersebut. Algoritme asimetris seperti RS256 dan ES256 memerlukan kunci publik penerbit sehingga hanya didekode, bukan diverifikasi di sini. Yang krusial, keputusan otorisasi yang sesungguhnya harus memverifikasi tanda tangan di sisi server; jangan pernah memercayai klaim sebuah token hanya berdasarkan pendekodean saja di dalam kode klien.
Payload bukanlah rahasia
Karena payload hanya dienkode, setiap klaim di dalamnya terlihat jelas oleh siapa pun yang memperoleh token — browser, proksi mana pun, bahkan pengguna itu sendiri. JWT adalah tempat yang sangat baik untuk data identitas dan otorisasi yang tidak sensitif, dan tempat yang sangat buruk untuk apa pun yang bersifat rahasia. Jangan pernah memasukkan kata sandi, secret API, nomor kartu kredit, atau data pribadi yang privat ke dalam payload dengan anggapan pendekodean melindunginya. Pendekodean tidak melindunginya.
Tanda tangan melindungi integritas, bukan kerahasiaan: ia mencegah pengubahan, tetapi sama sekali tidak menyembunyikan isinya. Jika Anda benar-benar memerlukan token terenkripsi yang payload-nya tidak dapat dibaca, itu adalah konstruksi yang berbeda dan lebih berat (JWE) — JWT standar ditandatangani, bukan dienkripsi. Simpanlah data rahasia di server dan rujuk dengan pengenal buram di dalam token sebagai gantinya.
Mendebug token dengan aman
Dalam pekerjaan sehari-hari, dekoder ini sangat berguna untuk men-debug alur autentikasi: pastikan pengguna yang tepat ada pada klaim subjek, periksa bahwa audiens cocok dengan layanan yang menolak permintaan, verifikasi bahwa scope atau peran hadir, dan baca waktu kedaluwarsa untuk melihat apakah respons 401 sekadar disebabkan token yang sudah basi. Menyalin header atau payload terformat ke dalam laporan bug atau fixture pengujian hanyalah langkah satu klik.
Semuanya terjadi secara lokal di browser Anda — token dan secret apa pun yang Anda ketik tidak pernah diunggah, dicatat, atau disimpan — sehingga aman untuk memeriksa token produksi yang sesungguhnya. Meski begitu, perlakukan token seperti kredensial sebagaimana adanya: token yang valid dan belum kedaluwarsa adalah kunci hidup ke sebuah akun, jadi hindari menempelkannya ke alat yang tidak tepercaya, dan utamakan token yang sudah kedaluwarsa atau token uji ketika berbagi contoh.
Pertanyaan yang sering diajukan
Apa itu JSON Web Token (JWT)?
Apakah mendekode JWT mengungkap kata sandi atau secret?
Bagaimana verifikasi tanda tangan bekerja di sini?
Apa arti klaim exp dan iat?
Apakah token saya dikirim ke server?
Alat terkait
Lanjutkan dengan alat praktis ini