Tutorial
Cara mendekode JWT tanpa membocorkannya
Sebuah JSON Web Token membawa data nyata: pengguna yang menerimanya, cakupan yang diberikannya, kapan masa berlakunya habis. Menempelkannya ke dekoder daring sembarangan berarti menyerahkan data itu, dan sering kali sesi yang masih aktif, ke server yang tidak Anda kendalikan. Dekoder di bawah ini berjalan sepenuhnya di browser Anda, sehingga Anda bisa membaca isi sebuah token, mengecek apakah masa berlakunya sudah habis, dan memastikan tanda tangan HMAC ketika Anda tahu kuncinya, semuanya tanpa satu pun permintaan jaringan keluar dari tab Anda.
Langkah demi langkah
- Buka dekoder JWT dan tempelkan token Anda ke kotak masukan. Sebuah JWT terdiri dari tiga potongan Base64Url yang digabung dengan titik: header, payload, dan tanda tangan. Anda dapat menempelkannya dengan awalan Bearer atau tanpa itu; alat ini membaca strukturnya dalam kedua kasus dan langsung memberi tahu Anda jika formatnya salah.
- Baca header dan payload yang sudah didekode. Header menunjukkan algoritma penandatanganan (misalnya HS256 atau RS256) dan id kunci jika ada. Payload mencantumkan klaim: untuk siapa token itu (sub), siapa yang menerbitkannya (iss), dan stempel waktunya. Alat ini mengubah bidang numerik iat, nbf, dan exp menjadi tanggal yang mudah dibaca serta menandai apakah token masih berlaku atau sudah kedaluwarsa.

- Jika token memakai HS256 dan Anda memegang kunci bersamanya, tempelkan kunci itu ke bidang verifikasi lalu klik Verifikasi. Alat ini menghitung ulang HMAC atas header dan payload dan membandingkannya dengan tanda tangan, sehingga Anda tahu apakah token itu asli atau telah diutak-atik. Untuk token RS256 atau ES256, penandatanganan memakai kunci privat yang tidak Anda miliki, jadi alat ini memeriksa klaim tetapi tidak mengaku memverifikasi tanda tangan.

Mengapa Anda tidak boleh menempelkan token ke situs sembarangan
Sebuah JWT tidak dienkripsi. Header dan payload hanya dikodekan Base64Url, yang berarti siapa pun yang menerima token bisa membaca setiap klaim di dalamnya: email, id pengguna, peran, tanda internal. Jika token adalah token akses yang belum kedaluwarsa, siapa pun yang memegangnya bisa memutarnya kembali dan bertindak sebagai Anda sampai masa berlakunya habis. Saat Anda menempelkan token yang masih aktif ke dekoder yang dihosting, Anda mengirim semua itu ke log server tersebut. Mendekode token di mesin Anda sendiri, tanpa unggahan, adalah satu-satunya cara memeriksanya tanpa memperluas siapa yang bisa melihatnya. Anda bisa memastikan tidak ada lalu lintas dengan membuka panel jaringan saat mendekode.
Apa yang bisa dan tidak bisa diberitahukan oleh tanda tangan
Tanda tangan adalah hal yang mencegah seseorang mengubah klaim dan lolos begitu saja. Untuk token HS256, kunci yang sama menandatangani dan memverifikasi, jadi jika Anda tahu kuncinya Anda bisa sepenuhnya memastikan token itu otentik di sini juga. Untuk token RS256 dan ES256, sebuah kunci privat menandatangani token dan hanya kunci publik yang cocok yang memverifikasinya; kunci privat tidak pernah meninggalkan penerbit, jadi alat sisi klien bisa membaca klaim tetapi tidak bisa membuktikan tanda tangan secara jujur tanpa kunci publik itu. Perlakukan payload yang didekode sebagai klaim yang dibuat penerbit, bukan sebagai bukti, sampai tanda tangan diperiksa oleh pihak yang memiliki kunci verifikasi. Untuk meng-hash atau membandingkan kunci secara terpisah, generator hash di situs ini juga berjalan secara lokal.
Struktur JWT dan apa yang diungkapkan setiap bagian
JWT terdiri dari tiga segmen yang di-encode dengan Base64url, dipisahkan oleh titik: header, payload, dan signature. Header menyatakan jenis token ("JWT") dan algoritmanya: HS256 (HMAC-SHA-256, shared secret) atau RS256 (RSA-SHA-256, pasangan kunci publik/privat) adalah yang paling umum. Payload membawa klaim seperti `sub` (subjek, biasanya ID pengguna), `iat` (Unix timestamp penerbitan), `exp` (Unix timestamp kedaluwarsa), `aud` (audiens yang dituju), dan klaim aplikasi kustom seperti peran atau cakupan. Base64url bukan enkripsi: ini adalah varian Base64 yang aman untuk URL yang menggantikan `+` dengan `-` dan `/` dengan `_`, serta menghilangkan padding. Siapa pun yang memiliki string token mentah dapat mendekode header dan payload tanpa kunci penandatanganan. Hanya segmen signature yang memerlukan kunci untuk verifikasi. Inilah mengapa menempelkan token produksi live ke dalam dekoder online eksternal merupakan risiko keamanan: jika `exp` token masih di masa mendatang dan layanan mencatat input, sesi yang diwakilinya mungkin terekspos.
Alat yang digunakan dalam panduan ini
Pertanyaan yang sering diajukan
Apakah token saya dikirim ke server mana pun saat saya mendekodenya?
Tidak. Dekoder memecah token, mendekode header dan payload dengan Base64Url, dan menampilkannya di memori. Pemeriksaan HMAC opsional memakai Web Crypto API bawaan browser Anda. Tidak ada yang melintasi jaringan, dan itu penting karena sebuah JWT sering memuat data pribadi dan sesi yang masih aktif. Buka panel jaringan browser Anda saat mendekode dan Anda tidak akan melihat satu pun permintaan keluar.
Bisakah alat ini memverifikasi tanda tangan RS256 atau ES256?
Tidak sepenuhnya, dan alat ini tidak akan berpura-pura. HS256 memakai satu kunci bersama untuk menandatangani dan memverifikasi, jadi menempelkan kunci itu memungkinkan alat memastikan tanda tangan di browser Anda. RS256 dan ES256 memakai kunci privat untuk menandatangani dan kunci publik terpisah untuk memverifikasi; alat ini membaca dan memvalidasi klaim serta masa berlaku tetapi berhenti sebelum menegaskan tanda tangan yang tidak bisa diperiksanya. Untuk token tersebut, verifikasilah di layanan yang memegang kunci publik.