UltKit

Penyahkod JWT

Tampal JSON Web Token dan baca header serta payloadnya sebagai JSON yang diformat, dengan masa tamat tempoh dan masa dikeluarkan dipaparkan sebagai tarikh, serta catatan sama ada token itu sah pada masa ini. Penyahkodan berlaku sepenuhnya dalam pelayar anda, dan ini penting apabila token itu ialah kelayakan akses yang masih aktif.

0 aksara · 0 perkataan · 0 baris

0 aksara · 0 perkataan · 0 baris

Berjalan sepenuhnya dalam tab pelayar ini. Teks Anda tidak pernah dimuat naik atau disimpan.

Tuntutan berdaftar

Tujuh nama tuntutan yang ditakrifkan dalam RFC 7519 §4.1. Semuanya pilihan; masa ialah saat sejak 1970-01-01 UTC.

TuntutanMaksud
issIssuer: siapa yang mencipta dan menandatangani token
subSubject: pengguna atau entiti yang menjadi perkara token
audAudience: kepada siapa token ditujukan
expMasa tamat: tolak token selepas saat ini
nbfTidak sebelum: tolak token sebelum saat ini
iatDikeluarkan pada: bila token dicipta
jtiID JWT: pengecam unik, digunakan untuk mencegah ulang main

Nilai alg biasa

Nilai algMaksud
HS256HMAC dengan SHA-256; satu rahsia kongsi menandatangani dan mengesahkan
RS256Tandatangan RSA PKCS#1 v1.5 dengan SHA-256; kunci peribadi menandatangani, kunci awam mengesahkan
PS256RSA-PSS dengan SHA-256
ES256ECDSA pada lengkung P-256 dengan SHA-256; tandatangan pendek
EdDSATandatangan Ed25519 atau Ed448
noneToken tidak bertandatangan; pelayan harus menolaknya

Kandungan JSON Web Token

JWT ditakrifkan dalam RFC 7519 (Mei 2015), yang mencadangkan sebutan seperti perkataan Inggeris "jot". Bentuk bertandatangan yang biasa ialah tiga rentetan Base64url yang disambung dengan titik: header.payload.signature. Header menamakan algoritma tandatangan dalam alg, seperti HS256 atau RS256, dan selalunya ID kunci dalam kid. Payload mengandungi tuntutan (claim), iaitu medan JSON seperti sub (pengguna), iss (penerbit), aud (khalayak yang dimaksudkan) serta exp, nbf dan iat, yang merupakan masa dalam saat sejak 1 Januari 1970 UTC. Penyahkod ini menukar ketiga-tiganya kepada waktu tempatan anda dan ISO 8601, serta memberitahu sama ada token telah tamat tempoh, belum sah, atau masih dalam tempoh sahnya.

Base64url ialah pengekodan, bukan penyulitan, jadi sesiapa yang memegang token boleh membaca payload-nya sama seperti yang dipaparkan oleh halaman ini. Jangan letakkan kata laluan, nombor kad atau rahsia lain dalam claim. Token dengan lima bahagian yang dipisahkan titik ialah JWE, iaitu token yang disulitkan; kandungannya tidak boleh dibaca tanpa kunci, dan penyahkod akan memaklumkannya. "Bearer " di awal yang disalin daripada pengepala Authorization dibuang secara automatik.

Mengapa tandatangan tidak disahkan di sini

Tandatangan membuktikan bahawa header dan payload dihasilkan oleh pemegang kunci dan tidak diubah sejak itu. Untuk menyemaknya, kunci tersebut diperlukan: rahsia kongsi bagi algoritma HMAC seperti HS256, atau kunci awam penerbit bagi RS256, ES256 atau EdDSA. Menampal rahsia tandatangan pengeluaran ke mana-mana laman web ialah idea yang buruk, dan penyahkod yang berpura-pura mengesahkan token tanpa kunci akan memberi keyakinan palsu, jadi alat ini memaparkan tandatangan tetapi tidak mengesahkannya. Anggap apa yang anda lihat sebagai tuntutan yang dibuat oleh token, bukan fakta.

Pengesahan perlu dilakukan di pelayan anda, menggunakan pustaka yang diselenggara dengan algoritma yang dijangka ditetapkan. Dua kesilapan lama menjelaskan sebabnya: menerima alg "none", yang membolehkan sesiapa memalsukan token tanpa tandatangan, dan kekeliruan algoritma, apabila pelayan yang menjangkakan RS256 diperdaya untuk menyemak tandatangan HS256 dengan kunci awam sebagai rahsia HMAC. Penyahkod digunakan untuk penyahpepijatan: melihat claim yang dikeluarkan oleh sesebuah penyedia, mengesan audience yang salah, atau mengetahui bahawa sesi gagal kerana exp telah berlalu seminit yang lalu. Untuk membaca segmen Base64url secara mentah, gunakan penyahkod Base64.

Soalan lazim

Adakah selamat menampal token akses sebenar ke dalam penyahkod JWT?
Pada halaman ini token tidak pernah meninggalkan pelayar anda. Namun, token yang sah berfungsi seperti kata laluan sehingga tamat tempoh, jadi utamakan token yang telah tamat tempoh atau token ujian, dan jangan sertakan token aktif dalam tangkapan skrin atau sembang.
Mengapa token saya dipaparkan sebagai tamat tempoh sedangkan ia baru dikeluarkan?
Semak jam peranti anda dahulu. Sesetengah penerbit memberi token akses hayat beberapa minit sahaja, dan token yang disalin daripada log mungkin lebih lama daripada yang disangka. exp yang ditulis dalam milisaat dan bukan saat memberi kesan sebaliknya, iaitu jatuh beribu tahun pada masa depan.
Bolehkah orang lain mengubah payload JWT saya?
Mereka boleh mengedit dan mengekod semula token itu, tetapi tandatangan tidak lagi sepadan. Pelayan yang mengesahkan tandatangan dengan kunci dan algoritma yang betul akan menolak token yang diubah itu.
Apakah perbezaan antara JWS dan JWE?
JWS (RFC 7515) ditandatangani, mempunyai tiga bahagian dan boleh dibaca oleh sesiapa sahaja. JWE (RFC 7516) disulitkan, mempunyai lima bahagian dan hanya pemegang kunci boleh membaca payload-nya.
Adakah log keluar membatalkan JWT?
Tidak dengan sendirinya. JWT bertandatangan kekal sah sehingga exp melainkan pelayan menyimpan senarai tolak atau menyemak rekod sesi, sebab itulah token akses lazimnya diberi hayat yang singkat.