Decode JWT Online
Dekode token JWT di browser Anda tanpa data yang dikirim ke server mana pun.
Mengapa menggunakannya
Debug token JWT secara instan
100% privat
Dekoding dilakukan di browser Anda. Token Anda tidak pernah meninggalkan perangkat.
Instan
Dekoding real time saat Anda mengetik. Tanpa tombol, tanpa menunggu.
JSON yang diformat
Header dan payload ditampilkan sebagai JSON yang mudah dibaca dengan sorotan sintaks yang tepat.
Semua jenis JWT didukung
Berfungsi dengan HS256, RS256, ES256, dan algoritma apa pun dalam standar JOSE.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel token JWT Anda
Salin dan tempel JWT apa pun ke dalam kolom input. Formatnya terdiri dari tiga bagian yang dipisahkan titik: header.payload.signature.
Dekoding instan
Header dan payload didekode dari Base64URL dan ditampilkan sebagai JSON yang diformat. Lihat jenis algoritma, issuer, kedaluwarsa, dan semua claims.
Analisis datanya
Tinjau setiap field payload: iss (issuer), sub (subject), exp (expiration), iat (issued at), aud (audience), dan setiap custom claim.
FAQ
Ada pertanyaan?
JWT (JSON Web Token) adalah standar terbuka (RFC 7519) yang mendefinisikan cara kompak dan mandiri untuk mengirimkan informasi antar pihak sebagai objek JSON. Token ditandatangani secara digital, memungkinkan keasliannya diverifikasi. JWT banyak digunakan untuk autentikasi dan otorisasi dalam REST API dan aplikasi web modern.
Saat pengguna masuk, server membuat JWT yang ditandatangani dengan kunci rahasia (HS256) atau kunci privat (RS256) dan mengirimkannya ke klien. Klien menyimpan token (biasanya dalam memori atau localStorage) dan menyertakannya dalam setiap permintaan sebagai Authorization: Bearer diikuti token. Server memverifikasi tanda tangan token tanpa mengakses database, menjadikan JWT mekanisme autentikasi stateless yang dapat diskalakan dengan baik di seluruh sistem terdistribusi.
JWT ditandatangani, bukan dienkripsi. Ini berarti siapa pun dapat mendekode payload dan membaca isinya, jadi jangan pernah menyertakan kata sandi, kartu kredit, atau data sensitif dalam payload. Tanda tangan menjamin integritas (tidak ada yang dapat memodifikasi token tanpa membatalkannya) tetapi bukan kerahasiaan. Jika Anda perlu mengenkripsi konten, gunakan JWE (JSON Web Encryption).
Claims adalah pernyataan tentang subjek token. Registered claims (RFC 7519) mencakup: iss (issuer), sub (subject), exp (expiration, Unix timestamp), iat (issued at), aud (audience), nbf (not before), dan jti (JWT ID). Selain itu, Anda dapat menyertakan custom claim apa pun yang dibutuhkan aplikasi Anda.
Tidak tanpa membatalkannya. Jika Anda memodifikasi bagian mana pun dari header atau payload dan tidak memiliki kunci rahasia untuk menandatanganinya kembali, tanda tangan yang dihasilkan akan salah dan server akan menolak token. Namun, kerentanan yang diketahui ada: serangan alg:none (di mana header mendeklarasikan tidak ada algoritma untuk melewati verifikasi) dan kebingungan algoritma RS256/HS256. Selalu gunakan library JWT yang terawat dengan baik yang secara eksplisit menangani kasus-kasus ini.
Session cookie menyimpan ID di server (stateful), sementara JWT berisi semua informasi dalam token itu sendiri (stateless). JWT lebih baik diskalakan dalam arsitektur terdistribusi dan layanan mikro karena tidak memerlukan sesi bersama. Namun, JWT memiliki kekurangan: Anda tidak dapat mencabut token sebelum kedaluwarsa tanpa infrastruktur tambahan (daftar hitam), dan jika token dicuri maka tetap valid hingga kedaluwarsa. Untuk sebagian besar aplikasi web tradisional, session cookie httpOnly tetap menjadi pilihan default yang lebih aman.
JWT: sejarah, struktur teknis, dan keamanan secara mendalam
JSON Web Token distandarisasi oleh IETF pada Mei 2015 sebagai RFC 7519, bagian dari kerangka kerja JOSE (JSON Object Signing and Encryption). JOSE juga mencakup JWS (JSON Web Signature, RFC 7515), JWE (JSON Web Encryption, RFC 7516), JWK (JSON Web Key, RFC 7517), dan JWA (JSON Web Algorithms, RFC 7518). Pekerjaan pada standar ini dimulai pada tahun 2011, dipimpin oleh Mike Jones (Microsoft), John Bradley, dan Nat Sakimura. Sebelum JWT, pengembang mengandalkan SAML (Security Assertion Markup Language), standar berbasis XML yang jauh lebih panjang dan kompleks.
JWT terdiri dari tiga bagian yang dikodekan Base64URL yang dipisahkan oleh titik. Base64URL berbeda dari Base64 standar dengan mengganti karakter plus dengan tanda hubung dan garis miring dengan garis bawah, serta menghilangkan padding tanda sama dengan, menjadikannya aman untuk digunakan dalam URL dan header HTTP tanpa pengkodean tambahan. Header menentukan jenis token dan algoritma penandatanganan. Algoritma yang paling umum adalah HS256 (HMAC-SHA256, kunci simetris), RS256 (RSA-SHA256, kunci asimetris), ES256 (ECDSA-SHA256, kurva P-256), dan none yang berbahaya (tanpa tanda tangan, yang tidak boleh pernah diterima dalam produksi).
Kerentanan JWT paling kritis terdokumentasi dengan baik dalam OWASP API Security Top 10. Kerentanan alg:none (CVE-2015-9235 dalam beberapa library) memungkinkan penyerang memodifikasi header untuk mendeklarasikan tidak diperlukan tanda tangan, sehingga server menerima payload arbitrari jika library tidak memvalidasi algoritma secara eksplisit. Kebingungan algoritma RS256/HS256 terjadi ketika server yang dikonfigurasi untuk RS256 juga menerima HS256: penyerang dapat menggunakan kunci publik RSA (yang menurut definisi bersifat publik) sebagai kunci rahasia HMAC untuk menandatangani token palsu. Library modern seperti jose, python-jose, dan jsonwebtoken mengatasi ini dengan mengharuskan algoritma ditentukan secara eksplisit saat memverifikasi.