JWT Generator dan Verifikator
Buat dan verifikasi JSON Web Token dengan HS256, RS256, PS256, ES256, atau EdDSA. Edit klaim, atur exp dan iat, dan cek signature di browser Anda.
Kunci dan token adalah rahasia. Semuanya ditandatangani dan diverifikasi secara lokal dengan Web Crypto API browser Anda: tidak ada yang diunggah.
Buat JWT bertanda tangan
Browser ini tidak mendukung Ed25519 di Web Crypto, sehingga EdDSA tidak tersedia.
Kunci uji dibuat di browser Anda dan diisikan di bawah. Simpan kunci privat atau secret untuk diri Anda sendiri; bagikan hanya kunci publiknya.
Verifikasi JWT
Cara membuat JWT bertanda tangan
- Pilih Algoritme: HS256/384/512 (secret bersama), RS256/384/512 atau PS256/384/512 (RSA), ES256/384/512 (ECDSA pada P-256, P-384, atau P-521), atau EdDSA (Ed25519, jika browser Anda mendukungnya).
- Edit Header (JSON) dan Payload (klaim JSON). Kolom
algselalu mengikuti algoritme yang dipilih, dantypsecara default bernilaiJWT. - Gunakan tombol klaim waktu untuk menambahkan tanggal: iat = sekarang, nbf = sekarang, atau pilih jeda seperti “1 jam lagi” lalu klik Atur exp. Nilainya berupa NumericDate: jumlah detik sejak 1 Januari 1970 UTC.
- Masukkan Secret (untuk algoritme HS, sebagai teks atau Base64/Base64url melalui Format secret) atau Kunci privat (PEM atau JWK). Belum punya kunci? Klik Buat kunci uji.
- Klik Tandatangani token, lalu Salin hasilnya atau klik Verifikasi token ini untuk langsung memeriksanya.
Cara memverifikasi JWT
- Tempel token di kolom Token yang diverifikasi.
- Pilih Algoritme yang diharapkan. Jika dibiarkan pada “Dari header token”, alat ini menerima apa pun yang tertulis di header, kecuali
none. Jika Anda memilih algoritme tertentu, alat ini menolak token yang ditandatangani dengan cara lain, seperti yang seharusnya dilakukan server sungguhan. - Masukkan secret, atau Kunci publik (PEM atau JWK): blok PEM
PUBLIC KEY,RSA PUBLIC KEY, atauCERTIFICATE, sebuah JWK, atau JWK Set (kunci yangkid-nya cocok dengan header akan dipakai). - Jika perlu, atur Toleransi jam (detik) agar selisih jam yang kecil tetap diterima, lalu klik Verifikasi token.
Hasilnya menyatakan apakah signature valid, lalu memeriksa exp (kedaluwarsa) dan nbf (tidak berlaku sebelum) terhadap waktu saat ini di komputer Anda. Token dengan signature yang benar tetapi waktu kedaluwarsanya sudah lewat dilaporkan sebagai kedaluwarsa, bukan sebagai valid.
Kunci dan format
Untuk penandatanganan, alat ini menerima blok PKCS#8 PRIVATE KEY, blok PKCS#1 RSA PRIVATE KEY dan SEC1 EC PRIVATE KEY (dikonversi ke PKCS#8 secara internal), serta JWK privat. Kunci yang dilindungi kata sandi harus diekspor terlebih dahulu tanpa kata sandi. Buat kunci uji membuat secret acak seukuran hash untuk algoritme HS, pasangan kunci RSA 2048 bit untuk RS dan PS, kurva yang sesuai untuk ES, atau pasangan Ed25519. Anda mendapatkan kunci dalam format PEM dan JWK, dan kunci tersebut langsung diisikan di kedua sisi sehingga uji bolak-balik bisa langsung dilakukan.
Signature mengikuti RFC 7515 dan RFC 7518: RSA-PSS memakai salt sepanjang hash, dan signature ECDSA berupa gabungan mentah r||s. Implementasinya mereproduksi contoh HS256 dari RFC 7515, Lampiran A.1.
Catatan keamanan
- Semuanya berjalan di browser Anda dengan Web Crypto API. Token maupun kunci tidak dikirim ke mana pun, tetapi tetap utamakan kunci uji daripada secret produksi.
alg: nonetidak pernah ditandatangani dan tidak pernah diterima.- Secret HMAC sebaiknya minimal sepanjang hash (32 byte untuk HS256). Secret yang lebih pendek memunculkan peringatan.
- Signature membuktikan integritas dan asal token, bukan bahwa klaimnya sesuai: server juga harus memeriksa
iss,aud, dan scope.
Pertanyaan yang sering diajukan
Apa bedanya HS256 dan RS256?
HS256 memakai satu secret bersama untuk menandatangani sekaligus memverifikasi, sehingga setiap verifikator juga bisa memalsukan token. RS256 (serta PS256, ES256, dan EdDSA) menandatangani dengan kunci privat dan memverifikasi dengan kunci publik yang aman untuk dipublikasikan.
Mengapa signature yang valid tetap menampilkan kesalahan?
Karena token berada di luar masa berlakunya: exp sudah lewat atau nbf masih di masa depan. Pemeriksaan signature dan pemeriksaan waktu dilaporkan secara terpisah.
Mengapa alg “none” ditolak?
Token tanpa tanda tangan bisa dibuat oleh siapa saja. Menerimanya adalah celah keamanan klasik pada pustaka JWT, sehingga alat ini menolaknya baik saat menandatangani maupun saat memverifikasi.
Bisakah saya memakai kunci RSA atau EC milik saya sendiri?
Bisa. Tempel kunci privat sebagai PEM atau JWK untuk menandatangani, dan kunci publik untuk memverifikasi. Alat ini memeriksa apakah jenis kunci dan kurvanya cocok dengan algoritme yang dipilih.
Mengapa EdDSA dinonaktifkan?
Browser Anda belum mendukung Ed25519 di Web Crypto. Versi terbaru Chrome, Edge, Firefox, dan Safari sudah mendukungnya.
Alat terkait
- JWT Decoder Dekode header dan payload JWT, baca exp, iat, dan nbf sebagai tanggal, serta verifikasi signature HS256, RS256, ES256, atau EdDSA di browser Anda.
- Generator HMAC Hitung HMAC-SHA1, SHA-256, SHA-384, atau SHA-512 dengan kunci teks, hex, atau Base64, dapatkan hasil hex dan Base64, dan cek signature webhook di browser Anda.
- Konverter Unix Timestamp Konversi Unix timestamp dalam detik atau milidetik ke tanggal yang mudah dibaca dalam waktu lokal, UTC, dan ISO 8601, lalu ubah tanggal kembali ke epoch.
- JSON Formatter dan Validator JSON formatter dan validator gratis untuk merapikan, minify, dan memeriksa JSON di browser Anda, dengan kesalahan sintaksis yang dilaporkan per baris dan kolom.