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.
| Tuntutan | Maksud |
|---|---|
iss | Issuer: siapa yang mencipta dan menandatangani token |
sub | Subject: pengguna atau entiti yang menjadi perkara token |
aud | Audience: kepada siapa token ditujukan |
exp | Masa tamat: tolak token selepas saat ini |
nbf | Tidak sebelum: tolak token sebelum saat ini |
iat | Dikeluarkan pada: bila token dicipta |
jti | ID JWT: pengecam unik, digunakan untuk mencegah ulang main |
Nilai alg biasa
| Nilai alg | Maksud |
|---|---|
HS256 | HMAC dengan SHA-256; satu rahsia kongsi menandatangani dan mengesahkan |
RS256 | Tandatangan RSA PKCS#1 v1.5 dengan SHA-256; kunci peribadi menandatangani, kunci awam mengesahkan |
PS256 | RSA-PSS dengan SHA-256 |
ES256 | ECDSA pada lengkung P-256 dengan SHA-256; tandatangan pendek |
EdDSA | Tandatangan Ed25519 atau Ed448 |
none | Token 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.