Decoder JWT

JSON Web Tokens (JWT) adalah cara ringkas dan URL-safe untuk merepresentasikan klaim antara dua pihak. Sebagian besar JWT ditandatangani menggunakan JWS (JSON Web Signature), yang memastikan integritas tetapi tidak mengenkripsi isinya. Alat ini mendekode header dan payload untuk mengungkap klaim, menampilkan timestamp dalam format yang mudah dibaca, dan menunjukkan status kedaluwarsa token.

Spesifikasi

Kasus Penggunaan Umum

  • Debug alur autentikasi OAuth 2.0 dan OpenID Connect
  • Memeriksa access token dan ID token dari penyedia identitas (Auth0, Okta, Keycloak)
  • Memverifikasi klaim token cocok dengan nilai yang diharapkan selama pengembangan API
  • Memeriksa kedaluwarsa token saat memecahkan masalah error "401 Unauthorized"
  • Memahami struktur token saat mengintegrasikan dengan layanan pihak ketiga
  • Mengaudit token untuk tinjauan keamanan (algoritma, klaim, kedaluwarsa)

Fitur

  • Mendekode header dan payload JWT (format JWS)
  • Menampilkan algoritma (HS256, RS256, ES256, PS256, EdDSA) dan tipe token
  • Mengurai klaim terdaftar: iss (issuer), sub (subject), aud (audience), exp (expiration), nbf (not before), iat (issued at), jti (JWT ID)
  • Menampilkan status kedaluwarsa dengan hitung mundur yang mudah dibaca
  • Menyalin bagian yang didekode sebagai JSON terformat

Contoh

Access Token OAuth 2.0

Coba →

Access token tipikal dengan klaim standar termasuk subject, issuer, dan expiration.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE5MTYyMzkwMjJ9.4S5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5J5

Tips

  • Token JWS (tipe paling umum) ditandatangani tetapi tidak dienkripsi. Siapapun dengan token dapat membaca payload dengan mendekode Base64.
  • Token JWE mengenkripsi payload, tetapi kurang umum. Alat ini mendekode token JWS.
  • Selalu verifikasi tanda tangan di sisi server sebelum mempercayai klaim. Alat ini menampilkan konten yang didekode tetapi tidak memverifikasi tanda tangan.
  • Algoritma "alg": "none" adalah risiko keamanan dan harus ditolak oleh server.
  • Algoritma simetris (HS256) menggunakan rahasia bersama; algoritma asimetris (RS256, ES256) menggunakan pasangan kunci publik/privat.
  • Klaim "exp" adalah timestamp Unix dalam detik. Periksa untuk menghindari menerima token yang kedaluwarsa.

Pemahaman Decoder JWT

JSON Web Tokens (JWT) adalah format token dominan untuk autentikasi dan otorisasi web modern. JWT adalah string ringkas yang URL-safe yang terdiri dari tiga segmen berenkode Base64url yang dipisahkan oleh titik: header yang menentukan algoritma penandatanganan, payload yang berisi klaim tentang pengguna atau sesi, dan tanda tangan kriptografis yang memastikan token belum dirusak. Struktur ini memungkinkan pihak manapun membaca isi token dengan decoding Base64 sederhana, sementara hanya pihak dengan kunci penandatanganan yang dapat membuat atau memverifikasi token yang valid.

Sebagian besar JWT menggunakan format JWS (JSON Web Signature), di mana payload ditandatangani tetapi tidak dienkripsi. Field "alg" header menentukan algoritma: algoritma simetris seperti HS256 menggunakan rahasia bersama yang diketahui oleh penerbit dan pemverifikasi, sementara algoritma asimetris seperti RS256 dan ES256 menggunakan kunci privat untuk penandatanganan dan kunci publik untuk verifikasi. Algoritma asimetris lebih disukai dalam sistem terdistribusi karena kunci verifikasi dapat dibagikan secara publik tanpa mengkompromikan kunci penandatanganan.

Payload berisi klaim terdaftar yang didefinisikan oleh RFC 7519: "iss" (issuer), "sub" (subject), "aud" (audience), "exp" (expiration time), "nbf" (not before), "iat" (issued at), dan "jti" (JWT ID). OAuth 2.0 dan OpenID Connect menambahkan klaim tambahan untuk scope, peran, dan informasi profil pengguna. Klaim "exp" sangat penting untuk keamanan — token tanpa kedaluwarsa atau dengan masa hidup yang terlalu lama adalah kerentanan umum.

JWT digunakan dalam access token OAuth 2.0, ID token OpenID Connect, autentikasi API, dan manajemen sesi. Penyedia identitas seperti Auth0, Okta, dan Keycloak menerbitkan JWT yang diverifikasi aplikasi tanpa menghubungi penyedia, memungkinkan autentikasi stateless. Namun, ini juga berarti pencabutan sulit — token yang dikompromikan tetap valid sampai kedaluwarsa, itulah mengapa waktu kedaluwarsa singkat dan alur token refresh adalah praktik keamanan yang penting.

Karena token JWS dienkode Base64url daripada dienkripsi, siapapun yang memiliki token dapat mendekode dan membaca header dan payload. Informasi sensitif seperti kata sandi, nomor kartu kredit, dan rahasia tidak boleh ditempatkan dalam payload JWT. Token JWE (JSON Web Encryption) mengenkripsi payload, tetapi jauh kurang umum dalam praktik. Perbedaan antara encoding dan enkripsi adalah salah satu hal terpenting untuk dipahami saat bekerja dengan JWT.

Pilihan algoritma penandatanganan memiliki implikasi keamanan yang signifikan. HS256 adalah algoritma simetris yang menggunakan satu rahasia bersama untuk penandatanganan dan verifikasi, membuatnya sederhana untuk diimplementasikan tetapi mengharuskan kedua pihak menyimpan rahasia yang sama secara aman. RS256 dan ES256 adalah algoritma asimetris yang menggunakan kunci privat untuk penandatanganan dan kunci publik untuk verifikasi. Dalam sistem terdistribusi, algoritma asimetris lebih disukai karena kunci publik dapat dibagikan secara terbuka — sering melalui endpoint JWKS (JSON Web Key Set) — tanpa mengkompromikan kunci penandatanganan. Opsi "alg": "none" menandakan token yang tidak ditandatangani tanpa tanda tangan sama sekali, artinya siapapun dapat memalsukan token dengan klaim arbitrer. Serangan terkenal melibatkan mengubah header algoritma menjadi "none" dan menghapus tanda tangan. Server harus selalu memvalidasi algoritma terhadap daftar yang diizinkan dan menolak token yang tidak ditandatangani.

Penanganan kedaluwarsa yang tepat sangat penting untuk keamanan JWT. Aplikasi harus memeriksa klaim "exp" pada setiap permintaan sebelum mempercayai token. Ketika token kedaluwarsa, refresh token (disimpan dengan aman, sering dalam cookie httpOnly) dapat digunakan untuk mendapatkan access token baru tanpa mengharuskan pengguna login lagi. Menjaga masa hidup access token tetap singkat — biasanya 5 hingga 15 menit — membatasi jendela paparan jika token dikompromikan. Mengimplementasikan token refresh secara proaktif, sebelum access token benar-benar kedaluwarsa, menghindari gangguan yang terlihat pengguna dalam aplikasi.

← Kembali ke semua alat