tigtools

Penjana JWT

Bina dan tandatangani JSON Web Token untuk ujian, atau semak sama ada tandatangan HMAC token sepadan dengan rahsia. Penandatanganan menggunakan Web Crypto API pelayar anda.

Berjalan dalam pelayar anda Tanpa pendaftaran

Mod
Rahsia kekal dalam tab penyemak imbas ini dan tidak dihantar ke mana-mana. Walaupun begitu, jangan tampalkan rahsia penandatanganan produksi ke mana-mana laman web: sesiapa yang memiliki rahsia itu boleh mencipta token yang sah untuk sistem anda. Gunakan rahsia ujian di sini.

alg ditetapkan daripada menu algoritma; typ secara lalai ialah JWT.

Tuntutan seperti sub, iat dan exp. Masa ialah saat sejak 1970 (UTC).

Masukkan rahsia untuk menandatangani token.

Cara menggunakannya

  1. Pilih HS256, HS384 atau HS512.
  2. Edit tuntutan payload, dan klik “Tetapkan iat dan exp” untuk menambah masa semasa dan tempoh luput.
  3. Masukkan rahsia ujian, atau jana rahsia rawak 256-bit.
  4. Salin token yang ditandatangani. Untuk menyemak token, tukar ke “Sahkan tandatangan”, tampalkannya dan masukkan rahsia.

Cara ia berfungsi

JSON Web Token (RFC 7519) mempunyai tiga bahagian yang dienkod Base64URL: pengepala, payload tuntutan dan tandatangan. Dengan algoritma HMAC HS256, HS384 dan HS512, tandatangan ialah HMAC dengan SHA-256, SHA-384 atau SHA-512 ke atas “header.payload”, menggunakan kunci rahsia yang dikongsi. Sesiapa yang mempunyai kunci rahsia itu boleh mencipta dan mengesahkan token.

Alat ini mensirikan pengepala dan payload sebagai JSON padat, mengekodnya, dan menandatanganinya dengan crypto.subtle, Web Crypto API terbina dalam pelayar anda. Medan alg dalam pengepala sentiasa sepadan dengan algoritma yang dipilih, typ lalai kepada JWT, dan mana-mana medan pengepala lain, seperti kid, dikekalkan. “Set iat and exp” menulis masa semasa sebagai iat (issued at) dan menambah jangka hayat yang dipilih sebagai exp, kedua-duanya dalam saat sejak 1 Januari 1970 UTC. Hasilnya sepadan dengan pustaka JWT lain; contohnya, token contoh klasik jwt.io dihasilkan semula dengan tepat.

Kunci rahsia boleh menjadi teks biasa (bait UTF-8nya ialah kunci) atau bait yang dienkod Base64/Base64URL, yang digunakan oleh banyak rangka kerja. Butang kunci rawak mencipta 32 bait rawak dengan crypto.getRandomValues. Untuk HS256, gunakan sekurang-kurangnya 32 bait rawak; kunci rahsia pendek pilihan manusia boleh diteka di luar talian daripada mana-mana token.

Pengesahan menyahkod token, memeriksa bahawa token itu menggunakan algoritma HMAC, dan mengira semula tandatangan dengan crypto.subtle.verify. Ia juga menunjukkan apabila exp atau nbf bermaksud token telah tamat tempoh atau belum sah. RS256, ES256 dan algoritma kunci awam lain tidak disokong, dan pengesahan di sini tidak memeriksa issuer, audience atau tuntutan lain yang mungkin diperlukan oleh aplikasi anda.

Contoh

Menguji API secara setempat

Pelayan pembangunan anda menjangkakan token HS256 yang ditandatangani dengan “dev-secret-change-me”. Tetapkan sub kepada ID pengguna ujian, klik “Set iat and exp” dengan 1 jam, masukkan kunci rahsia dan hantar token dalam pengepala Authorization: Bearer.

Menyemak rahsia mana yang menandatangani token

Token pementasan ditolak. Tampalkannya ke dalam “Sahkan tandatangan” dan cuba rahsia pementasan: “Tandatangan tidak sah” menunjukkan token ditandatangani dengan rahsia berbeza atau rahsia dalam format berlainan (teks vs Base64).

Menghasilkan semula contoh jwt.io

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

Soalan Lazim

Adakah rahsia saya dihantar ke pelayan anda?

Tidak. Penandatanganan dan pengesahan dijalankan dengan Web Crypto API dalam pelayar anda, dan rahsia tidak disimpan atau dihantar ke mana-mana. Kami tetap mengesyorkan menggunakan rahsia ujian sahaja, kerana rahsia penandatanganan sebenar tidak sepatutnya ditaip ke dalam mana-mana laman web.

Mengapa tandatangan tidak sah walaupun rahsia betul?

Semak format rahsia. Sesetengah sistem menggunakan teks rahsia, yang lain menyahkodnya daripada Base64 terlebih dahulu, yang menghasilkan bait kunci berbeza. Juga semak bahawa token tidak diubah dan ia menggunakan algoritma yang sama.

Bolehkah saya mencipta token RS256 atau ES256?

Tidak dengan alat ini. Ia hanya menyokong algoritma HMAC kunci kongsi HS256, HS384 dan HS512.

Adakah payload disulitkan?

Tidak. JWT yang ditandatangani hanya dikodkan; sesiapa sahaja boleh menyahkod dan membaca payload. Tandatangan hanya membuktikan ia tidak diubah. Jangan letakkan kata laluan atau rahsia lain dalam payload.

Privasi

Token dicipta dan disahkan hanya dalam pelayar anda dengan Web Crypto API. Header, payload, token dan rahsia tidak dimuat naik, disimpan atau disertakan dalam analitik.