Lewati ke konten

header.payload.signature

Dekoder JWT

JSON Web Token (JWT) adalah 3 bagian Base64url yang dipisahkan titik: header, payload, dan tanda tangan. Tempel token untuk membaca klaim dan waktunya; token didekode di sini, bukan diverifikasi.

Token tetap di tab ini dan tidak dikirim ke mana pun. Token yang berhasil didekode belum tentu token tepercaya: tanda tangan tidak pernah diperiksa di sini.

Scanned by NortonTM Safe Web

Sekilas

Harga
Tanpa biaya
Akun
Tidak perlu
Standar
RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
Tanda tangan
Tidak diverifikasi — token hanya didekode
Waktu
exp, nbf, dan iat ditampilkan dalam UTC dan dibandingkan dengan jam Anda
Unggah
Tidak ada — token tetap di tab browser Anda

Token contoh dan algoritma umum

Token contoh di halaman ini ditandatangani dengan HMAC-SHA-256 memakai kunci sekali pakai. Halaman mendekodenya untuk menghasilkan tabel pertama.

Klaim token contoh
KlaimNilaiWaktu (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
Algoritma penandatanganan umum (alg)
algKeluargaHashUkuran tanda tangan
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

Cara mendekode JWT

1

Tempel token

Tempel seluruh token, dengan atau tanpa awalan Bearer. Token memiliki 3 bagian yang dipisahkan titik, atau 5 jika berupa JWE terenkripsi.

2

Baca bagian-bagiannya

Header dan payload muncul sebagai JSON terformat, dan setiap klaim dicantumkan dalam tabel. Waktu exp, nbf, dan iat ditampilkan dalam UTC.

3

Periksa waktunya

Halaman membandingkan exp dan nbf dengan jam perangkat Anda dan menyatakan apakah token sudah kedaluwarsa. Halaman tidak menyatakan apakah token itu asli.

Bagaimana JWT disusun

JWT (RFC 7519) ditulis sebagai header.payload.signature. Header dan payload adalah objek JSON, masing-masing dienkode sebagai Base64url tanpa padding (RFC 4648, bagian 5), dan tanda tangan adalah byte mentah dalam enkoding yang sama. Dekode hanya mengubah enkoding, sehingga siapa pun yang memegang token dapat membaca payload-nya: jangan taruh rahasia di dalamnya. Header menyebut algoritma penandatanganan di alg, seperti HS256 (HMAC dengan SHA-256, tanda tangan 32 byte) atau RS256 (RSA dengan SHA-256, 256 byte untuk kunci 2048-bit).

Halaman ini mendekode token dan tidak lebih. Ia tidak memeriksa tanda tangan, karena itu memerlukan kunci, dan ia tidak dapat menyatakan apakah token asli, dicabut, atau diterima server. Ia membandingkan klaim exp, nbf, dan iat, yang menghitung detik sejak 1970-01-01 UTC, dengan jam perangkat Anda dan mencetaknya sebagai tanggal-waktu UTC. Token dengan 5 bagian adalah JWE: isinya terenkripsi, jadi hanya header-nya yang dapat ditampilkan.

Pertanyaan tentang JWT

Bagaimana cara mendekode JWT?

Tempel token ke kotak. Halaman memecahnya di titik, mengubah dua bagian pertama dari Base64url, dan menampilkannya sebagai JSON. Awalan Bearer diabaikan. Untuk token contoh, header-nya adalah {"alg":"HS256","typ":"JWT"}.

Apakah halaman ini memverifikasi tanda tangan?

Tidak. Verifikasi memerlukan secret atau kunci publik, dan halaman ini tidak pernah memintanya. Token yang berhasil didekode di sini tetap bisa dipalsukan, diubah, atau dicabut. Verifikasi tanda tangan di kode server Anda sendiri dengan pustaka JWT yang terpelihara.

Apa arti exp, iat, dan nbf?

Itu adalah waktu dalam detik sejak 1970-01-01 UTC (RFC 7519). exp adalah saat token kedaluwarsa, nbf adalah waktu sebelum mana token tidak boleh diterima, dan iat adalah saat token diterbitkan. Pada token contoh, iat 1700000000 adalah 2023-11-14 22:13:20 UTC dan exp 1700003600 satu jam kemudian.

Amankah menempel token sungguhan di sini?

Token tetap di tab browser Anda dan tidak dikirim ke mana pun. Meski begitu, token aktif adalah kredensial: siapa pun yang memegangnya dapat memakainya sampai kedaluwarsa. Tempel token milik Anda sendiri, dan pilih token kedaluwarsa atau uji bila bisa.

Mengapa token saya memiliki 5 bagian?

Token dengan 5 bagian adalah JWE, JSON Web Token terenkripsi (RFC 7516). Payload-nya dienkripsi untuk penerima, jadi halaman ini hanya menampilkan header dan ukuran bagian-bagiannya. Isinya tidak dapat dibaca di sini.

Apa arti "not Base64url" atau "not JSON"?

Masing-masing dari dua bagian pertama harus berupa teks Base64url yang terdekode menjadi objek JSON. Halaman menyebut bagian yang gagal dan sebabnya: karakter di luar alfabet, byte yang bukan UTF-8, atau JSON dengan kesalahan di baris dan kolom tertentu. Penyebab yang lazim adalah token yang terpotong atau berkarakter berlebih.