tigtools

Generator JWT

Buat dan tandatangani JSON Web Token untuk pengujian, atau periksa apakah tanda tangan HMAC token cocok dengan kunci rahasia. Penandatanganan menggunakan Web Crypto API browser Anda.

Berjalan di browser Anda Tanpa perlu mendaftar

Mode
Kunci rahasia tetap berada di tab browser ini dan tidak pernah dikirim ke mana pun. Meskipun demikian, jangan tempel kunci rahasia penandatanganan produksi ke situs web mana pun: siapa pun yang memiliki kunci rahasia dapat membuat token yang valid untuk sistem Anda. Gunakan kunci rahasia pengujian di sini.

alg diambil dari menu algoritma; typ bawaan adalah JWT.

Klaim seperti sub, iat, dan exp. Waktu adalah detik sejak 1970 (UTC).

Masukkan kunci rahasia untuk menandatangani token.

Cara menggunakan

  1. Pilih HS256, HS384, atau HS512.
  2. Edit klaim pada payload, lalu klik “Atur iat dan exp” untuk menambahkan waktu saat ini dan kedaluwarsa.
  3. Masukkan kunci rahasia pengujian, atau buat kunci rahasia acak 256-bit.
  4. Salin token yang telah ditandatangani. Untuk memeriksa token, alihkan ke “Verifikasi tanda tangan”, tempel token, dan masukkan kunci rahasia.

Cara kerja

JSON Web Token (RFC 7519) memiliki tiga bagian berenkode Base64URL: header, payload klaim, dan tanda tangan. Dengan algoritme HMAC HS256, HS384, dan HS512, tanda tangan adalah HMAC dengan SHA-256, SHA-384, atau SHA-512 atas “header.payload”, menggunakan kunci rahasia bersama. Siapa pun yang memiliki rahasia dapat membuat dan memverifikasi token.

Alat ini menserialisasi header dan payload sebagai JSON ringkas, mengenkodenya, dan menandatanganinya dengan crypto.subtle, Web Crypto API bawaan browser Anda. Kolom alg di header selalu sesuai dengan algoritme yang dipilih, nilai bawaan typ adalah JWT, dan kolom header lain seperti kid dipertahankan. “Set iat and exp” menulis waktu saat ini sebagai iat (waktu diterbitkan) dan menambahkan masa berlaku yang dipilih sebagai exp, keduanya dalam detik sejak 1 Januari 1970 UTC. Hasilnya cocok dengan pustaka JWT lain; misalnya, token contoh klasik jwt.io direproduksi dengan tepat.

Rahasia dapat berupa teks biasa (byte UTF-8-nya menjadi kuncinya) atau byte berenkode Base64/Base64URL, yang digunakan banyak framework. Tombol rahasia acak membuat 32 byte acak dengan crypto.getRandomValues. Untuk HS256, gunakan setidaknya 32 byte acak; rahasia pendek buatan manusia dapat ditebak secara offline dari token mana pun.

Verifikasi mendekode token, memeriksa bahwa token menggunakan algoritme HMAC, dan menghitung ulang tanda tangan dengan crypto.subtle.verify. Ini juga menunjukkan saat exp atau nbf berarti token kedaluwarsa atau belum berlaku. RS256, ES256, dan algoritme kunci publik lainnya tidak didukung, dan verifikasi di sini tidak memeriksa issuer, audience, atau klaim lain yang mungkin diperlukan aplikasi Anda.

Contoh

Menguji API secara lokal

Server pengembangan Anda mengharapkan token HS256 yang ditandatangani dengan “dev-secret-change-me”. Atur sub ke ID pengguna uji, klik “Set iat and exp” dengan 1 jam, masukkan rahasia, lalu kirim token di header Authorization: Bearer.

Memeriksa secret mana yang menandatangani token

Token staging ditolak. Tempel token tersebut ke “Verifikasi tanda tangan” dan coba secret staging: “Tanda tangan tidak valid” memberi tahu bahwa token ditandatangani dengan secret yang berbeda atau secret menggunakan format yang berbeda (teks vs Base64).

Membuat ulang contoh jwt.io

Dengan header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234567890","name":"John Doe","iat":1516239022}, dan secret “your-256-bit-secret”, token diakhiri dengan SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, sama seperti di jwt.io.

Pertanyaan yang sering diajukan

Apakah secret saya dikirim ke server Anda?

Tidak. Penandatanganan dan verifikasi dijalankan dengan Web Crypto API di dalam browser Anda, dan secret tidak disimpan atau dikirim ke mana pun. Kami tetap menyarankan hanya menggunakan secret uji, karena secret penandatanganan asli tidak boleh diketik di situs web mana pun.

Mengapa tanda tangan tidak valid meskipun secret-nya benar?

Periksa format secret. Beberapa sistem menggunakan teks secret, sistem lain mendekode dari Base64 terlebih dahulu, sehingga menghasilkan byte kunci yang berbeda. Periksa juga bahwa token tidak berubah dan menggunakan algoritme yang sama.

Bisakah saya membuat token RS256 atau ES256?

Tidak dengan alat ini. Alat ini hanya mendukung algoritme HMAC dengan secret bersama HS256, HS384, dan HS512.

Apakah payload dienkripsi?

Tidak. JWT yang ditandatangani hanya di-encode; siapa pun dapat mendekode dan membaca payload. Tanda tangan hanya membuktikan bahwa data tidak diubah. Jangan masukkan kata sandi atau rahasia lain ke dalam payload.

Privasi

Token dibuat dan diverifikasi hanya di browser Anda dengan Web Crypto API. Header, payload, token, dan kunci rahasia tidak diunggah, disimpan, atau disertakan dalam analitik.