JWT Decoder

Decode dan periksa JSON Web Token

Coba contoh

Token JWT

Berjalan lokal ยท Aman untuk menempel rahasia
Coba juga:JWT Encoder

Apa itu JWT (JSON Web Token)?

JSON Web Token (JWT) adalah format token yang ringkas dan aman untuk URL, didefinisikan dalam RFC 7519. JWT mengkodekan sekumpulan klaim sebagai objek JSON, kemudian menandatanganinya โ€” dan opsional mengenkripsinya โ€” sehingga penerima dapat memverifikasi bahwa data tidak dimanipulasi. JWT adalah standar de facto untuk autentikasi tanpa status dalam REST API, sistem single sign-on, dan otorisasi layanan mikro.

Anatomi JWT: Header ยท Payload ยท Signature

Setiap JWT terdiri dari tiga segmen yang dikodekan base64url dan dipisahkan oleh titik. Header dan Payload adalah JSON biasa โ€” dapat dibaca siapa saja โ€” sedangkan Signature adalah nilai kriptografis yang hanya dapat diverifikasi menggunakan kunci yang benar.

Token terenkode

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadSignature
Header
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Mengapa Menggunakan Dekoder JWT?

JWT mentah terlihat seperti teks acak. Alat ini langsung menampilkan Header dan Payload sebagai JSON terformat sehingga Anda dapat memeriksa klaim, memeriksa waktu kedaluwarsa, dan mengaudit pilihan algoritma tanpa menulis satu baris kode pun.

๐Ÿ”
Pemeriksaan Klaim Instan
Lihat setiap klaim dalam Payload โ€” sub, iss, aud, exp, peran khusus, izin โ€” terformat dan dapat dibaca dalam satu klik.
๐Ÿ”“
Tidak Memerlukan Kunci Rahasia
Header dan Payload bersifat publik; hanya Signature yang memerlukan rahasia. Alat ini mendekode keduanya tanpa kunci penandatanganan Anda.
โฑ๏ธ
Penguraian Kedaluwarsa & Cap Waktu
Cap waktu Unix (exp, iat, nbf) secara otomatis dikonversi ke tanggal yang dapat dibaca manusia sehingga Anda dapat langsung melihat apakah token telah kedaluwarsa.
๐Ÿ”’
Berjalan Sepenuhnya di Browser
Semua diproses secara lokal โ€” tidak ada data token yang dikirim ke server mana pun. Aman digunakan dengan token produksi saat melakukan debugging.

Referensi Klaim JWT Standar

RFC 7519 mendefinisikan tujuh nama klaim terdaftar. Ini tidak diwajibkan, tetapi penggunaannya sangat disarankan untuk interoperabilitas. Anda dapat menambahkan klaim khusus apa pun ke Payload.

KlaimDeskripsiTipe
issPenerbit โ€” Mengidentifikasi siapa yang menerbitkan token โ€” misalnya URL server autentikasi atau nama aplikasi Anda.string
subSubjek โ€” Mengidentifikasi prinsipal yang menjadi topik JWT โ€” biasanya ID pengguna atau akun layanan.string
audAudiens โ€” Mengidentifikasi penerima yang dituju. Pihak penerima harus memverifikasi bahwa ini sesuai dengan identifikatornya.string | string[]
expWaktu Kedaluwarsa โ€” Cap waktu Unix setelahnya token tidak boleh diterima. Selalu tetapkan ini untuk membatasi kerusakan akibat token yang dicuri.number
nbfTidak Sebelum โ€” Cap waktu Unix sebelumnya token tidak boleh diterima. Berguna untuk menjadwalkan token bertanggal masa depan.number
iatDiterbitkan Pada โ€” Cap waktu Unix saat token diterbitkan. Digunakan untuk menghitung usia token.number
jtiJWT ID โ€” Pengenal unik untuk token. Memungkinkan pencabutan dengan menyimpan dan memeriksa nilai JTI yang digunakan di sisi server.string

Algoritma Penandatanganan JWT

Klaim header alg menyatakan algoritma mana yang menandatangani token. Pilihan memengaruhi keamanan, kinerja, dan apakah layanan pihak ketiga dapat memverifikasi token tanpa kunci privat.

AlgoritmaKeluargaJenis kunciCatatan
HS256HMACSymmetricPaling umum. Rahasia bersama โ€” siapa pun yang memiliki rahasia dapat menandatangani dan memverifikasi.
HS384HMACSymmetricVarian HMAC yang lebih kuat; biaya kinerja sedang.
HS512HMACSymmetricVarian HMAC terkuat.
RS256RSAAsymmetricAlgoritma asimetris yang paling banyak digunakan (Google, Auth0, Okta). Kunci publik memverifikasi tanpa kunci privat.
RS384RSAAsymmetricVarian RS dengan keamanan lebih tinggi.
RS512RSAAsymmetricVarian RS terkuat.
ES256ECDSAAsymmetricKurva eliptik โ€” tanda tangan lebih pendek dari RSA, populer di perangkat seluler dan IoT.
PS256RSA-PSSAsymmetricRSA-PSS: lebih modern dan aman daripada RS256 berbasis PKCS1v1.5.
noneโ€”โ€”Tanpa tanda tangan โ€” sangat berbahaya. Jangan pernah menerima token dengan alg: none di produksi.

Pertimbangan Keamanan

Mendekode JWT selalu aman. Mempercayai JWT tanpa verifikasi tanda tangan yang benar tidak aman. Ingat aturan ini setiap kali Anda menggunakan token dalam aplikasi Anda.

Selalu aman
  • โ€“Mendekode dan memeriksa JWT di alat pengembang atau alat ini
  • โ€“Menggunakan exp, iat, dan nbf untuk memahami masa pakai token
  • โ€“Mencatat klaim Payload untuk debugging (abaikan PII yang sensitif)
  • โ€“Membaca header alg untuk memahami bagaimana token ditandatangani
Jangan pernah lakukan ini
  • โ€“Mempercayai klaim dalam Payload tanpa memverifikasi tanda tangan di sisi server
  • โ€“Menerima token dengan alg: none โ€” ini berarti tidak ada tanda tangan sama sekali
  • โ€“Menyimpan token akses di localStorage pada aplikasi dengan keamanan tinggi (lebih baik gunakan cookie httpOnly)
  • โ€“Menetapkan exp jauh di masa depan untuk token yang membawa izin sensitif

Kasus Penggunaan Umum

Debugging Alur Autentikasi
Tempel token dari tab jaringan browser Anda untuk memeriksa klaim, memeriksa peran yang disematkan, dan memverifikasi kedaluwarsa tanpa menyentuh kode produksi.
Memeriksa Token Pihak Ketiga
Baca dengan cepat token dari Google, Auth0, Okta, atau Azure AD untuk melihat klaim apa yang disertakan oleh penyedia Anda dan bandingkan dengan skema yang diharapkan.
Pengembangan & Pengujian API
Saat menulis atau menguji endpoint API, dekode header otorisasi untuk memastikan logika pembuatan token Anda menetapkan nilai sub, aud, dan scope yang benar.
Otorisasi Layanan Mikro
Dalam service mesh, setiap layanan memvalidasi JWT dari pemanggil upstream. Dekode token untuk melacak layanan mana yang menerbitkan token dan izin apa yang dinyatakannya.
Dukungan & Respons Insiden
Saat pengguna melaporkan kesalahan autentikasi, dekode token mereka untuk memeriksa apakah telah kedaluwarsa, apakah audiens salah, atau apakah klaim yang diperlukan tidak ada.
Audit Keamanan
Audit penggunaan JWT di seluruh layanan dengan memeriksa pilihan algoritma, jendela kedaluwarsa, dan apakah data sensitif secara tidak sengaja tersimpan dalam Payload yang tidak terenkripsi.

Mendekode JWT dalam Kode

Header dan Payload dikodekan base64url โ€” cukup balikkan pengkodeannya. Base64url mengganti + dengan - dan / dengan _, serta menghilangkan padding =. Hanya Signature yang memerlukan kunci rahasia.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Pertanyaan yang Sering Diajukan

Bisakah saya mendekode JWT tanpa kunci rahasia?
Ya. Header dan Payload JWT hanyalah JSON yang dikodekan base64url โ€” bukan dienkripsi. Siapa pun dapat mendekode dan membacanya. Rahasia (atau kunci privat untuk algoritma RS/ES) hanya diperlukan untuk memverifikasi tanda tangan, mengonfirmasi bahwa token tidak dimanipulasi.
Apakah mendekode JWT berarti tanda tangan telah diverifikasi?
Tidak. Mendekode hanya membaca klaim. Verifikasi adalah langkah terpisah yang memeriksa tanda tangan kriptografis menggunakan kunci yang benar. Selalu verifikasi tanda tangan sebelum mempercayai klaim apa pun dalam aplikasi Anda.
Apa perbedaan antara HS256 dan RS256?
HS256 menggunakan satu rahasia simetris yang dibagikan antara penerbit dan verifier โ€” siapa pun yang memiliki rahasia dapat membuat dan memverifikasi token. RS256 menggunakan pasangan kunci asimetris: kunci privat menandatangani, kunci publik memverifikasi. Dengan RS256 Anda dapat mendistribusikan kunci publik sehingga layanan eksternal dapat memverifikasi token tanpa kemampuan untuk memalsunya.
Mengapa dekoding base64 kadang-kadang gagal?
JWT menggunakan pengkodean base64url, yang menggunakan - sebagai pengganti + dan _ sebagai pengganti /, dan menghilangkan karakter padding =. Dekoder base64 standar memerlukan + dan / dan mungkin memerlukan padding. Tambahkan padding (pad ke kelipatan 4 dengan =) dan tukar karakter sebelum mendekode secara manual.
Apakah aman menempel JWT produksi ke alat ini?
Ya โ€” alat ini berjalan sepenuhnya di browser Anda dan tidak mengirim data ke server mana pun. Namun, berhati-hatilah dengan siapa yang dapat melihat layar atau riwayat browser Anda. Untuk token yang sangat sensitif, dekode secara lokal di terminal Anda.
Apa arti alg: none dan apakah berbahaya?
alg: none berarti token tidak memiliki tanda tangan kriptografis โ€” siapa pun dapat membuat token dengan klaim sembarang dan mengatur alg ke none. Beberapa pustaka JWT awal menerima token ini, menciptakan kerentanan kritis. Pustaka JWT yang aman selalu menolak token dengan alg: none kecuali dikonfigurasi secara eksplisit. Jangan pernah menonaktifkan pemeriksaan ini.