RevealTheme logo

Decoder JWT

Dekode JSON Web Tokens (JWT) secara instan. Berjalan di browser Anda: token tidak pernah meninggalkan perangkat Anda, sehingga aman digunakan dengan rahasia produksi.

Cara menggunakan alat ini

  1. 1

    Tempel JWT Anda ke kolom input.

  2. 2

    Klik Decode. Header dan payload akan di-parse dan ditampilkan.

  3. 3

    Periksa algoritma, klaim (claims), masa berlaku, dan penerbit.

Apa itu JWT dan bagaimana cara kerjanya?

JSON Web Token (JWT, didefinisikan dalam RFC 7519) adalah cara yang ringkas dan aman untuk URL untuk merepresentasikan sekumpulan klaim (claims) tentang seorang pengguna, dengan bukti kriptografis bahwa klaim-klaim tersebut tidak dimanipulasi. JWT menggerakkan autentikasi di sebagian besar tumpukan web modern: saat Anda masuk, server membuat JWT yang berisi ID pengguna dan izin Anda, menandatanganinya dengan kunci rahasia, lalu mengembalikannya kepada Anda. Browser Anda menyimpan token tersebut (biasanya di localStorage atau dalam cookie) dan menyertakannya di header Authorization pada setiap permintaan berikutnya. Server memverifikasi tanda tangan pada setiap permintaan: jika valid, klaim di dalam token dipercaya; jika dimanipulasi, tanda tangan rusak dan permintaan ditolak. JWT memiliki tiga bagian yang di-encode dengan Base64URL dan dipisahkan oleh titik: header mendeklarasikan algoritma penandatanganan (HS256 untuk HMAC-SHA256, RS256 untuk RSA, ES256 untuk ECDSA, none untuk token tanpa tanda tangan, yang berbahaya dan sebaiknya Anda tolak); payload berisi klaim sebenarnya (klaim standar seperti 'sub' untuk subjek, 'exp' untuk kedaluwarsa, 'iat' untuk tanggal penerbitan, ditambah klaim khusus apa pun yang didefinisikan aplikasi Anda); tanda tangan adalah bukti bahwa header dan payload ditandatangani oleh seseorang yang memiliki rahasia tersebut. Decoder ini mengungkap dua bagian pertama, yang merupakan informasi publik; tanda tangan hanya dapat diverifikasi dengan kunci, itulah sebabnya setiap decoder JWT menampilkan klaim tanpa verifikasi.

Kasus penggunaan umum

  • Men-debug masalah autentikasi dengan mendekodekan JWT yang dikirim klien Anda — lihat persis klaim apa yang ada, siapa penerbitnya, dan kapan masa berlakunya habis.

  • Memeriksa JWT API gateway (AWS Cognito, Auth0, Okta) untuk memahami struktur klaim bagi layanan hilir.

  • Memverifikasi bahwa klaim khusus (ID organisasi, peran, feature flag) telah diatur dengan benar pada kode penerbitan token.

  • Membandingkan token sebelum dan sesudah refresh untuk memastikan masa berlakunya telah diperpanjang.

  • Mengaudit algoritma sebuah token — pastikan RS256 atau ES256 digunakan di produksi, jangan pernah 'none'.

  • Menerjemahkan payload base64url dari log server menjadi klaim yang dapat dibaca manusia.

Pertanyaan yang sering diajukan

Apakah aman digunakan dengan JWT produksi?
Ya. Pendekodean terjadi sepenuhnya di browser Anda melalui JavaScript lokal: token tidak pernah sampai ke server kami atau muncul di log mana pun. Anda dapat membuktikannya dengan membuka DevTools → tab Network sambil mendekode: tidak ada permintaan keluar yang dipicu. Meski begitu, perlakukan JWT sebagai kredensial: jangan menempelkannya ke URL, tangkapan layar, atau dokumen bersama, di mana pun decoder dijalankan.
Apakah ini memverifikasi tanda tangan?
Tidak. Verifikasi tanda tangan memerlukan rahasia (untuk HS256) atau kunci publik (untuk RS256/ES256/PS256). Alat web yang meminta rahasia Anda untuk memverifikasi JWT adalah tanda bahaya keamanan: Anda akan mengirimkan kunci penandatanganan Anda kepada orang asing. Verifikasi tanda tangan di server atau dengan pustaka yang Anda kendalikan (jose, jsonwebtoken).
Bagaimana jika JWT saya sudah kedaluwarsa?
Kedaluwarsa tidak menghalangi pendekodean: klaim 'exp' hanyalah sebuah data di dalam payload. Cari 'exp' di payload yang sudah didekode: ini adalah stempel waktu Unix (detik sejak 1970). Konversikan dengan Konverter Stempel Waktu kami untuk melihat kedaluwarsa di zona waktu Anda. Jika 'exp' sudah lewat, token akan ditolak oleh setiap pemverifikasi yang patuh, meskipun decoder masih dapat membacanya.
Apakah JWT dapat dienkripsi?
Ya: itu disebut JWE (JSON Web Encryption, RFC 7516). Alat ini menangani JWS (JSON Web Signature, kasus umum), di mana payload ditandatangani tetapi tetap terlihat. Token JWE memiliki 5 bagian yang dipisahkan titik alih-alih 3 dan memerlukan kunci privat penerima untuk didekripsi. Jika token Anda memiliki 5 bagian, Anda memerlukan alat yang kompatibel dengan JWE.
Apa arti 'alg': 'none' dan apakah berbahaya?
'none' berarti tidak ada tanda tangan: token tidak ditandatangani dan siapa pun dapat memalsukan klaim apa pun. Sistem produksi harus secara eksplisit menolak token dengan 'alg: none'. Beberapa pustaka menerimanya secara default (kelas CVE yang terkenal). Selalu izinkan hanya algoritma yang diharapkan aplikasi Anda.
Mengapa menggunakan JWT alih-alih cookie sesi?
JWT tidak menyimpan status (stateless): server tidak perlu mengonsultasikan sesi; token itu sendiri berisi identitas dan izin pengguna. Ini membuat JWT ideal untuk sistem terdistribusi dan API. Cookie sesi menyimpan status (memerlukan penyimpanan sesi di server) tetapi lebih mudah dibatalkan (cukup hapus sesi). Kompromisnya: JWT lebih mudah diskalakan, tetapi Anda tidak dapat 'mengeluarkan pengguna' hingga token kedaluwarsa.
Apa saja klaim standar dari sebuah JWT?
RFC 7519 mendefinisikan: iss (penerbit), sub (subjek, biasanya ID pengguna), aud (audiens), exp (waktu kedaluwarsa), nbf (tidak sebelum), iat (diterbitkan pada), jti (ID JWT). Selain itu, aplikasi menambahkan klaim khusus seperti 'roles', 'permissions', atau 'tenant_id'. Jaga agar klaim khusus tetap kecil: JWT ikut di header setiap permintaan dan meningkatkan konsumsi bandwidth Anda.

Alat terkait