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.