Dekoder JWT

Baca claim dan masa berlaku JWT, periksa tanda tangan HS256, HS384, dan HS512.

Mendekode bukan memverifikasi. Siapa pun bisa membaca atau memalsukan isi token; hanya pemeriksaan tanda tangan yang menunjukkan token tidak diubah.

Opsional. Hanya dipakai di halaman ini dan tidak dikirim ke mana pun.

Tempel token untuk membacanya.

Apa yang dilakukan alat ini

JSON Web Token (JWT) adalah string panjang berisi huruf dan titik yang diberikan banyak API dan sistem login setelah Anda masuk. Alat ini membukanya: menampilkan header dan payload sebagai JSON yang mudah dibaca, mengubah claim waktu menjadi tanggal sebenarnya di zona waktu Anda, dan memberi tahu apakah token sudah kedaluwarsa. Jika token ditandatangani dengan secret bersama (HS256, HS384, atau HS512), Anda bisa mengetik secret untuk memeriksa tanda tangannya juga. Token dibaca di peramban Anda dan tidak dikirim ke mana pun, penting karena token aktif adalah kunci menuju akun seseorang.

Mendekode bukan memverifikasi

Ini hal terpenting tentang JWT. Header dan payload hanya di-enkode Base64URL, tidak dienkripsi, sehingga siapa pun yang memegang token dapat membacanya, dan siapa pun dapat menulis token dengan isi sesukanya. Melihat "admin": true di token hasil dekode tidak membuktikan apa-apa. Hanya pemeriksaan tanda tangan yang menunjukkan bahwa token dibuat oleh pihak yang mengetahui secret atau kunci privat dan tidak diubah sesudahnya. Server harus memverifikasi tanda tangan di setiap permintaan dan menentukan sendiri algoritma yang diterima, tidak pernah memercayai kolom alg pada token; token dengan alg: none tidak bertanda tangan dan merupakan serangan klasik.

Tiga bagian token

Token terdiri dari tiga string Base64URL yang digabung dengan titik: header.payload.signature. Pada token contoh yang terkenal, header-nya {"alg":"HS256","typ":"JWT"} dan payload-nya {"sub":"1234567890","name":"John Doe","iat":1516239022}. Tanda tangannya adalah HMAC 32 byte dari dua bagian pertama. Anda bisa mencobanya: dengan secret your-256-bit-secret contoh itu valid, dengan secret lain tidak. Tekan Contoh untuk mencoba.

Membaca tanggal

Tiga claim berisi waktu, semuanya berupa jumlah detik sejak 1 Januari 1970 UTC:

  • exp adalah saat token berhenti berlaku. Pada atau setelah saat ini token harus ditolak.
  • nbf (not before) adalah saat token mulai berlaku.
  • iat (issued at) adalah saat token dibuat.

Alat menampilkan masing-masing sebagai tanggal di zona waktu Anda, sebagai ISO 8601 UTC, dan dalam bentuk relatif seperti "3 hari yang lalu". Untuk iat 1516239022 dan exp 1516242622, tanggalnya 18 Januari 2018 pukul 01:30:22 dan 02:30:22 UTC, jadi token hidup selama satu jam. Kesalahan umum adalah menulis exp dalam milidetik: nilainya jatuh puluhan ribu tahun ke depan. Jika claim bukan jumlah detik yang valid, alat memberi tahu alih-alih menampilkan tanggal yang salah.

Memeriksa tanda tangan

Untuk HS256, HS384, dan HS512, tanda tangan adalah HMAC dengan SHA-256, SHA-384, atau SHA-512 atas header.payload menggunakan secret. Ketik secret-nya, atau centang bahwa secret berformat Base64URL bila sistem Anda menyimpannya begitu. Pemeriksaan memakai Web Crypto peramban dan secret tidak keluar dari halaman. Token RS256, ES256, dan sejenisnya memakai kunci privat dan diperiksa dengan kunci publik, yang tidak dilakukan alat ini; alat menyatakannya, tidak menebak.

Masalah umum

  • "JWT memiliki tiga bagian." Anda menyalin sebagian saja, atau ada baris baru atau tanda kutip yang ikut. Alat menghapus Bearer di awal dan spasi di sekelilingnya.
  • Base64URL atau JSON tidak valid. Token terpotong atau bukan JWT.
  • Lima bagian. Itu token terenkripsi (JWE) dan tidak bisa dibaca tanpa kuncinya.
  • Tanda tangan valid tetapi "Kedaluwarsa". Tanda tangannya benar; tokennya saja yang sudah terlalu lama. Selisih jam satu atau dua menit antarserver itu wajar, sehingga banyak sistem memberi toleransi kecil.

Pertanyaan yang sering diajukan

Apakah aman menempelkan token saya di sini?

Token didekode di peramban Anda dan tidak diunggah. Meski begitu, perlakukan token aktif seperti kata sandi: pakai token uji atau yang sudah kedaluwarsa, dan jangan bagikan token yang masih berlaku.

Apakah mendekode JWT membuktikan token itu asli?

Tidak. Isinya hanya di-enkode sehingga siapa pun bisa membaca atau memalsukannya. Hanya pemeriksaan tanda tangan dengan secret atau kunci yang tepat yang menunjukkan token asli dan tidak berubah.

Mengapa token RS256 atau ES256 saya tidak bisa diperiksa?

Algoritma itu ditandatangani dengan kunci privat dan diverifikasi dengan kunci publik pasangannya. Alat ini hanya memeriksa algoritma secret bersama: HS256, HS384, dan HS512.

Apa arti exp, iat, dan nbf?

exp adalah waktu kedaluwarsa, iat adalah saat token diterbitkan, dan nbf adalah saat sebelum mana token tidak boleh diterima. Ketiganya berupa detik sejak 1 Januari 1970 UTC.