TK TaskKit
Tools Developer

JWT Encoder

Tanda tangani JSON Web Token secara lokal dengan algoritma HS, RS, PS, atau ES. Header, payload, dan signing key tidak pernah meninggalkan browser kamu.

Algoritma
Header
Claim kustom
Payload
Claim kustom
Header (mentah)
Payload (mentah)
Signing keyHS256
Token tertandatangan

Pilih algoritma, edit header dan payload, paste signing key kamu, dan token kamu yang tertandatangan akan muncul di sini.

Input tetap di perangkat ini. Setiap tool developer di TaskKit berjalan sepenuhnya di browser kamu. Token, payload, dan teks yang di-paste tidak ditransmisikan ke server TaskKit atau pihak ketiga.

Apa yang dilakukan tool ini

Encoder JWT ini menandatangani JSON Web Token sepenuhnya di browser kamu. Pilih algoritma, edit header dan payload, paste signing key kamu (shared secret untuk HMAC; private key PEM PKCS#8 untuk RSA atau ECDSA), dan kamu mendapat token tertandatangan lengkap yang dapat di-paste ke request, fixture, atau config.

Algoritma yang didukung: HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512, dan EdDSA (Ed25519). alg: none juga didukung, tapi UI menandainya sebagai risiko keamanan token tanpa tanda tangan.

Input key menerima apa yang sebenarnya dikeluarkan kebanyakan tool CLI. Private key RSA dapat di-paste sebagai PKCS#8 (BEGIN PRIVATE KEY) atau sebagai PKCS#1 (BEGIN RSA PRIVATE KEY) — TaskKit membungkus body PKCS#1 menjadi PKCS#8 dengan reader ASN.1 internal yang kecil sebelum menyerahkannya ke WebCrypto, tanpa perlu langkah openssl pkcs8 -topk8. EdDSA menerima seed private 32-byte sebagai 64 karakter hex, 43 karakter base64url, JWK, atau PKCS#8 PEM. Key PKCS#8 yang ter-encrypt (BEGIN ENCRYPTED PRIVATE KEY) ditolak dengan petunjuk decryption satu baris; private key EC SEC1 (BEGIN EC PRIVATE KEY) ditolak dengan petunjuk konversi satu baris.

Kapan menggunakannya

  • Generate token untuk tes integrasi lokal di mana kamu mengontrol kedua sisi.
  • Memproduksi fixture untuk unit test yang membutuhkan string berbentuk token dengan signature riil.
  • Mereproduksi bug dari token yang berfungsi dengan mengubah claim dan menandatangani ulang dengan key yang sama.
  • Membangun token contoh untuk rekan kerja selama sesi debug, tanpa mengekspos secret di situs bersama.

Cara kerjanya

Penandatanganan menggunakan crypto.subtle.sign, API WebCrypto bawaan browser. Key HMAC diimpor dari byte mentah; private key RSA dan ECDSA diimpor sebagai PKCS#8 (PKCS#1 dikonversi on the fly). EdDSA melalui @noble/ed25519 karena dukungan WebCrypto untuk Ed25519 masih belum merata. Encoder membangun base64url(header).base64url(payload).base64url(signature) dan itulah token-nya.

Field alg header selalu di-overwrite agar cocok dengan algoritma yang kamu pilih, bahkan jika kamu mengetik sesuatu yang berbeda di textarea header. typ: "JWT" ditambahkan secara default jika kamu tidak menyertakannya. Field header kustom (kid, x5t, apapun lainnya) dipertahankan.

Header, payload, dan signing key tidak pernah meninggalkan browser kamu. Tidak ada langkah server.

Catatan

Dari mana saya mendapatkan private key? Untuk RSA: openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 menghasilkan PEM PKCS#8 (BEGIN PRIVATE KEY). Blok PKCS#1 yang lebih lama (BEGIN RSA PRIVATE KEY) diterima langsung — tidak perlu langkah konversi. Untuk EdDSA: openssl genpkey -algorithm Ed25519 berfungsi dan TaskKit membaca PEM PKCS#8 yang dihasilkan. Private key EC SEC1 (BEGIN EC PRIVATE KEY) perlu dikonversi terlebih dahulu dengan openssl pkcs8 -topk8 -nocrypt -in sec1.pem -out pkcs8.pem.

Haruskah saya menandatangani token dengan alg: none? Hampir tidak pernah. Token tanpa signature tidak memiliki perlindungan integritas dan verifier apapun yang menerimanya dapat ditipu. Encoder menghasilkannya untuk kelengkapan dan secara eksplisit memperingatkan; perlakukan output sebagai test-only.

HS atau RS untuk kode baru? RS256 (atau ES256) saat pihak eksternal memverifikasi — mereka hanya butuh public key. HS256 saat service yang sama berada di kedua sisi.

Tools terkait