Apakah alat ini?
JWT (JSON Web Token) ialah string ringkas dan selamat-URL yang digunakan untuk membawa claim antara dua pihak — paling biasa sebagai token pengesahan selepas log masuk. Ia mempunyai tiga bahagian dipisahkan titik: header (algoritma dan jenis token), payload (claim sebenar — ID pengguna, peranan, tamat tempoh, dsb.), dan tandatangan (digunakan oleh pelayan untuk mengesahkan token tidak diusik).
Header dan payload hanyalah JSON yang dikodkan Base64URL — bukan disulitkan — jadi sesiapa sahaja boleh menyahkod dan membacanya tanpa kunci rahsia. Hanya tandatangan yang memerlukan rahsia untuk disahkan. Itulah tepat yang dilakukan alat ini: nyahkod bahagian yang boleh dibaca dan tunjukkan sebagai JSON diformat, tanpa cuba mengesahkan tandatangan.
JWT diseragamkan dalam RFC 7519, dengan lapisan tandatangan (JWS) ditakrifkan berasingan dalam RFC 7515 — rujukan berguna apabila anda memerlukan senarai rasmi claim berdaftar seperti exp, iat, sub dan aud.
Kenapa guna alat ini?
- Header dan payload boleh dibaca serta-merta, diformat sebagai JSON — tiada lagi pemisahan string secara manual dan penyahkodan Base64 sendiri.
- Semakan tamat tempoh automatik: jika payload mempunyai claim "exp", ia ditukar kepada tarikh yang boleh dibaca dan ditandai sebagai tamat tempoh atau sah.
- Salin sekali klik untuk header atau payload secara berasingan.
- 100% sisi klien — token dinyahkod secara tempatan dan tidak pernah dihantar, selamat digunakan walaupun dengan token dari sistem produksi.
- Tiada pengesahan tandatangan dilakukan atau didakwa — ini alat penyahpepijatan/pemeriksaan, bukan pengesah.
Cara menggunakannya
- Tampal JWT anda ke dalam kotak (string penuh, termasuk ketiga-tiga bahagian dipisahkan titik).
- Header dan payload dinyahkod secara automatik semasa anda menaip.
- Semak baris tamat tempoh jika token mempunyai claim "exp" — ia menunjukkan tarikh tepat dan sama ada token telah tamat tempoh.
- Klik "Copy" di bawah mana-mana kotak untuk salin bahagian itu sebagai JSON.
Contoh
Input
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQHasil
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}Tandatangan (bahagian ketiga) tidak pernah dinyahkod atau disemak — ia adalah hash tersembunyi yang digunakan di pelayan untuk mengesahkan kesahihan.
Tip praktikal
- Menyahpepijat ralat "invalid token": nyahkod payload dahulu untuk semak claim "exp" — token tamat tempoh ialah punca paling biasa, dan tidak selalu jelas dari mesej ralat sahaja.
- Menyemak apa yang sebenarnya terkandung dalam token API pihak ketiga: banyak API memulangkan JWT yang kelihatan legap sebagai token akses — nyahkod di sini untuk lihat skop, ID pengguna, atau tamat tempoh yang integrasi anda sebenarnya terima.
- Jangan sesekali anggap JWT disulitkan: jika anda nampak data sensitif (emel, ID dalaman) dalam payload yang dinyahkod semasa pembangunan, itu petanda untuk pindahkan data itu ke sisi pelayan bukannya bergantung kepada klien untuk tidak membacanya.
Claim biasa yang akan anda lihat dalam payload
| Claim | Maksud |
|---|---|
| sub | Subject — biasanya ID pengguna yang diwakili token |
| exp | Masa tamat tempoh (timestamp Unix) — token tidak sah selepas ini |
| iat | Issued at — bila token dicipta |
| iss | Issuer — perkhidmatan/pelayan mana yang mengeluarkan token |
| aud | Audience — perkhidmatan mana yang menjadi sasaran token |
| role / roles / scope | Claim tersuai — kebenaran atau peranan yang diberikan kepada pengguna (bukan sebahagian daripada piawaian JWT, tetapi sangat biasa) |
Soalan lazim
Adakah alat ini mengesahkan tandatangan JWT?
Tidak. Mengesahkan tandatangan memerlukan kunci rahsia atau kunci awam yang digunakan untuk menandatangani token, yang hanya dimiliki oleh pelayan pengeluar. Alat ini hanya menyahkod header dan payload — bahagian yang boleh dibaca manusia — supaya anda boleh memeriksa claim dan tamat tempoh tanpa memerlukan sebarang kunci.
Selamatkah tampal JWT produksi sebenar di sini?
Penyahkodan berlaku sepenuhnya dalam pelayar anda melalui JavaScript — token tidak pernah dihantar ke mana-mana pelayan, termasuk milik kami. Namun begitu, layan token seperti kata laluan: jangan tampal ke dalam alat yang anda tidak percayai, dan elakkan berkongsi tangkapan skrin token yang dinyahkod yang mengandungi claim sensitif.
Kenapa sesiapa sahaja boleh baca payload JWT saya tanpa kata laluan?
Memang sengaja begitu — header dan payload JWT dikodkan Base64URL, bukan disulitkan. Pengekodan bukan keselamatan; ia hanya menjadikan JSON selamat-URL untuk dihantar. Jangan sesekali letak rahsia (kata laluan, nombor kad kredit) terus dalam payload JWT — anggap sesiapa yang memiliki token boleh baca kandungannya.
Apa maksud claim "exp" dan kenapa ia penting?
"exp" ialah masa tamat tempoh token, sebagai timestamp Unix (saat sejak 1970). Pelayan menolak JWT sebaik masa ini berlalu, memaksa klien untuk mengesahkan diri semula. Alat ini menukarnya kepada tarikh yang boleh dibaca dan menandakan sama ada ia sudah tamat tempoh, yang berguna untuk menyahpepijat isu "kenapa sesi saya log keluar".
Token saya menunjukkan ralat penghuraian JSON — kenapa?
Sama ada string itu bukan JWT yang sah (perlu tepat tiga bahagian dipisahkan titik), atau ia telah dipotong atau diubah — punca biasa ialah token yang tidak sengaja terpecah pada berbilang baris atau hilang aksara di hujung apabila disalin.