JWT Decoder

Penyahkod / Pengekod JWT

Nyahkod mana-mana JSON Web Token untuk melihat pengepala, muatan dan tandatangannya — atau tandatangani yang baharu dengan HS256/384/512. Mengesahkan tandatangan HMAC secara setempat. 100% dalam pelayar anda.

Penyahkod / Pengekod JWT — TL;DR

Nyahkod mana-mana JSON Web Token untuk melihat pengepala, muatan dan tandatangannya — atau tandatangani yang baharu dengan HS256/384/512. Mengesahkan tandatangan HMAC secara setempat. 100% dalam pelayar anda.

Tidak. Keseluruhan alat ini ialah JavaScript di dalam halaman ini. Tampal token, penyahkodan berlaku dalam pelayar anda, bait-bait tidak pernah meninggalkan tab. Buka DevTools → Network dan perhatikan — tiada permintaan dihantar semasa nyahkod atau sahkan. Itu menjadikannya selamat untuk menampal token pelanggan atau pengeluaran sebenar.

Ia membuktikan token telah ditandatangani oleh seseorang yang memegang rahsia (HMAC) atau kunci peribadi (RSA/ECDSA). Ia TIDAK menyulitkan muatan — pengepala dan muatan hanyalah JSON yang dikodkan base64url, sesiapa sahaja yang mempunyai token boleh membacanya. Tandatangan hanya menghalang gangguan: jika anda menukar satu bait sahaja muatan, tandatangan tidak lagi sepadan.

JWT sering membawa ID pengguna, e-mel, skop, dan kadangkala setara dengan kuki sesi — tepat sekali data yang anda TIDAK BOLEH tampalkan ke pelayan orang asing. Penyahkod iKit berjalan sebagai JavaScript yang sudah dimuatkan dalam tab pelayar anda. Boleh disahkan dalam DevTools → Network: tiada fetch, tiada XHR, tiada beacon semasa nyahkod atau sahkan.

Pengepala

Muatan

Tandatangan

Tuntutan piawai


            

Sahkan tandatangan HMAC

Untuk token HS256/384/512, taipkan rahsia tandatangan untuk mengesahkan tandatangan secara setempat. Untuk RS256/ES256 (RSA/ECDSA), gunakan pustaka di sebelah pelayan — pengesahan kunci awam memerlukan fail PEM yang tidak kami terima di sini.

Mengapa Penyahkod JWT iKit

Cara terpantas untuk menyahpepijat JWT — tiada muat naik, tiada pendaftaran, tiada pihak ketiga antara anda dan token anda.

Tiga panel, satu tampalan

Tampal JWT, lihat pengepala, muatan dan tandatangan yang dinyahkod bersebelahan. Tuntutan piawai (iss, sub, aud, exp, iat) dicop masa dan dilabelkan.

Pengesahan HMAC setempat

Untuk token HS256/384/512, taipkan rahsia untuk mengesahkan tandatangan menggunakan API Web Crypto pelayar. Rahsia tidak pernah meninggalkan tab anda.

Tandatangani token anda sendiri

Tukar ke mod Kod, sunting pengepala dan muatan sebagai JSON, pilih algoritma, taipkan rahsia, dan dapatkan token bertandatangan dengan serta-merta.

Privasi mengikut reka bentuk

Muatan JWT mengandungi ID pengguna, e-mel, kadangkala skop — jangan sekali-kali tampalkannya ke alat sebelah pelayan. Penyahkod iKit berjalan sebagai JavaScript dalam pelayar anda. Boleh disahkan dalam DevTools → Network.

Kesedaran tamat tempoh

Tuntutan piawai seperti exp, nbf, iat ditonjolkan dengan tarikh boleh dibaca manusia dan lencana TAMAT TEMPOH / sah yang jelas supaya anda boleh tahu sekilas pandang sama ada token masih sah.

Piawaian terbuka, kod terbuka

Dibina di atas API Web Crypto asli pelayar dan penghurai JSON — algoritma yang sama dengan OpenSSL, libjwt, jose. Kelakuannya sepadan dengan setiap pustaka JWT moden.

Bagaimana penyahkodan JWT sebenarnya berfungsi

JWT ialah tiga segmen JSON yang dikodkan base64url dipisahkan oleh titik — itu sahaja.

  1. 1

    Pisahkan pada dua titik

    JWT kelihatan seperti aaa.bbb.ccc. Kami pisahkan pada dua titik literal, menghasilkan pengepala, muatan dan tandatangan yang dikodkan. Jika kami tidak mendapat tepat tiga bahagian, token itu cacat.

  2. 2

    Nyahkod Base64URL setiap bahagian

    Pengepala dan muatan ialah JSON UTF-8 yang dikodkan base64url. Base64URL = Base64 dengan -/_ bukannya +//= dan tanpa padding. Kami melakukan atob selepas menggantikan aksara semula, kemudian JSON.parse rentetan yang terhasil.

  3. 3

    Paparkan dengan struktur

    Pengepala memberitahu kami algoritma (alg: HS256, RS256, dll.) dan jenis. Muatan mengandungi tuntutan — yang piawai (iss, sub, aud, exp, iat, nbf, jti) ditambah mana-mana medan tersuai. Kami memaparkan setiap satu dalam bahagian yang dilabelkan.

  4. 4

    Sahkan (HMAC sahaja)

    Untuk HS256/384/512, kami mengira semula HMAC bagi header.payload menggunakan rahsia yang anda taip dan membandingkan dengan tandatangan dalam segmen ketiga. Sama seperti HMAC(SHA-256, secret, signing_input) yang dikodkan base64url. Sepadan = tandatangan sah.

Tugas penyahpepijatan JWT yang biasa

Situasi sebenar di mana anda akan memerlukan penyahkod JWT.

Memeriksa token daripada pembekal pengesahan anda

Auth0, Firebase, Keycloak, AWS Cognito semuanya mengembalikan JWT selepas log masuk. Tampal access_token untuk melihat tuntutan apa yang sebenarnya diterima oleh aplikasi anda — apakah ID pengguna, apakah skop, bila ia tamat tempoh?

Menyahpepijat 401 Unauthorized

API menolak permintaan anda? Nyahkod token untuk menyemak: adakah ia tamat tempoh (exp pada masa lalu)? Adakah tuntutan audiens (aud) seperti yang dijangkakan oleh API? Adakah pengeluar (iss) tenant yang betul?

Mengesahkan tandatangan webhook

Stripe, GitHub Apps, Slack menghantar muatan webhook yang ditandatangani sebagai JWT. Selepas menerimanya, tampalkannya ke dalam mod Nyahkod ditambah dengan rahsia kongsi untuk mengesahkan permintaan itu sebenarnya datang daripada mereka.

Menjana token ujian

Perlukan JWT bertandatangan baharu untuk ujian integrasi? Tukar ke mod Kod, sunting muatan (ID pengguna tersuai, tamat tempoh tersuai), pilih HS256 + rahsia ujian anda, dapatkan token dalam milisaat. Tiada perjalanan pergi-balik backend.

Mengapa penyahkodan JWT setempat penting

JWT sering membawa ID pengguna, e-mel, skop, dan kadangkala setara dengan kuki sesi — tepat sekali data yang anda TIDAK BOLEH tampalkan ke pelayan orang asing. Penyahkod iKit berjalan sebagai JavaScript yang sudah dimuatkan dalam tab pelayar anda. Boleh disahkan dalam DevTools → Network: tiada fetch, tiada XHR, tiada beacon semasa nyahkod atau sahkan.

  • Sifar permintaan rangkaian semasa nyahkod atau sahkan — boleh disahkan dalam DevTools.
  • Rahsia yang anda taip untuk pengesahan kekal dalam memori pelayar dan dipadam pada Kosongkan / muat semula.
  • Selamat untuk token pengeluaran, token akses pelanggan, dan rahsia webhook.

Panduan berkaitan

Tutorial mendalam dan perbandingan alat daripada blog iKit.

Soalan Lazim Ditanya

Adakah ini selamat? Adakah JWT saya dimuat naik?

Tidak. Keseluruhan alat ini ialah JavaScript di dalam halaman ini. Tampal token, penyahkodan berlaku dalam pelayar anda, bait-bait tidak pernah meninggalkan tab. Buka DevTools → Network dan perhatikan — tiada permintaan dihantar semasa nyahkod atau sahkan. Itu menjadikannya selamat untuk menampal token pelanggan atau pengeluaran sebenar.

Apakah sebenarnya yang disahkan oleh tandatangan JWT?

Ia membuktikan token telah ditandatangani oleh seseorang yang memegang rahsia (HMAC) atau kunci peribadi (RSA/ECDSA). Ia TIDAK menyulitkan muatan — pengepala dan muatan hanyalah JSON yang dikodkan base64url, sesiapa sahaja yang mempunyai token boleh membacanya. Tandatangan hanya menghalang gangguan: jika anda menukar satu bait sahaja muatan, tandatangan tidak lagi sepadan.

Mengapa muatan saya yang dinyahkod kelihatan baik tetapi pengesahan gagal?

Tiga sebab biasa: (1) rahsia salah — rahsia JWT sensitif huruf besar/kecil dan sebarang ketidaksepadanan ruang putih akan merosakkan pengesahan. (2) Ketidaksepadanan algoritma — pengepala mengatakan HS256 tetapi rahsia digunakan dengan HS512 pada asalnya. (3) Token telah diubah suai selepas ditandatangani — walaupun satu bait merosakkan tandatangan. Periksa header.alg sepadan dengan apa yang anda jangkakan.

Bagaimana pula dengan RS256, ES256, dan algoritma kunci awam yang lain?

iKit pada masa ini hanya menyokong pengesahan HMAC (HS256/384/512) sahaja. RS256 dan ES256 menggunakan kriptografi kunci awam — pengesahan memerlukan kunci awam pengeluar dalam format PEM, yang merupakan UI yang lebih rumit. Buat masa ini, penyahkodan masih berfungsi (bahagian pengepala/muatan/tandatangan dipaparkan dengan betul), tetapi butang Sahkan akan memberitahu anda ia tidak disokong. Pengesahan RSA/ECDSA dirancang.

Bagaimana ini berbeza daripada jwt.io?

Idea yang sama, lalai berbeza. Penyahkod iKit berjalan sepenuhnya dalam pelayar anda (jwt.io juga begitu, tetapi kod iKit terbuka untuk view-source dan domain kami tiada penjejak pihak ketiga). Kami menambah lencana TAMAT TEMPOH / sah yang jelas untuk tuntutan exp, nota tuntutan berstruktur (iat / nbf / iss / sub / aud / jti sebagai baris yang boleh dibaca), dan butang salin-segala-yang-dinyahkod yang memberi anda output berstruktur penuh untuk ditampal ke dalam laporan pepijat.