Generator JWT Gratis
Buat JSON Web Tokens dengan header & payload kustom. Ditandatangani dengan HMAC-SHA256 di browser Anda · tidak ada yang meninggalkan perangkat Anda.
Token yang Dihasilkan
Apa Sebenarnya JWT Itu
JSON Web Token (JWT), dilafalkan "jot", adalah representasi yang ringkas dan aman-URL dari klaim yang akan ditransfer antara dua pihak. Format ini adalah tiga segmen yang dikodekan Base64url dipisahkan dengan titik: header.payload.signature. Header mendeklarasikan tipe token (selalu JWT) dan algoritma penandatanganan (umumnya HS256, RS256, atau ES256). Payload membawa klaim: objek JSON dengan field standar seperti iss (issuer), sub (subject), aud (audience), exp (waktu kedaluwarsa sebagai timestamp Unix), nbf (not before), iat (issued at), jti (JWT ID), ditambah klaim spesifik aplikasi yang ingin disertakan oleh issuer. Signature adalah bukti kriptografis bahwa header dan payload tidak dirusak: dihasilkan dengan menandatangani string base64url(header).base64url(payload) yang digabungkan dengan algoritma dan kunci yang dideklarasikan dalam header. JWT dispesifikasikan oleh Michael B. Jones, John Bradley, dan Nat Sakimura sebagai RFC 7519 pada Mei 2015, dibangun di atas pekerjaan sebelumnya di JOSE (JSON Object Signing and Encryption: RFC 7515 hingga 7520). Format ini telah menjadi bentuk token dominan dalam autentikasi web modern, digunakan oleh implementasi OAuth 2.0 / OIDC, gateway API, token sesi aplikasi single-page, autentikasi microservice-ke-microservice, dan manajemen sesi berbasis cookie browser pada skala besar.
Pilihan Algoritma Penandatanganan: HS256 vs RS256 vs ES256
JWT mendukung beberapa algoritma penandatanganan yang terdaftar di JOSE Algorithms registry (RFC 7518). HS256 (HMAC-SHA256) adalah yang paling sederhana: algoritma simetris di mana rahasia yang sama digunakan untuk menandatangani dan memverifikasi. Murah untuk dikomputasi, mudah diimplementasikan, dan sesuai ketika penandatangan dan pemverifikasi adalah pihak yang sama (misalnya, satu aplikasi yang menerbitkan token sesi untuk dirinya sendiri). RS256 (RSA-SHA256) adalah asimetris: kunci privat menandatangani, kunci publik memverifikasi. Digunakan ketika issuer dan verifier adalah pihak yang berbeda: Auth0, Okta, Google Identity Platform, Microsoft Entra ID, dan sebagian besar penyedia identitas cloud menerbitkan JWT yang ditandatangani RS256 karena klien dapat memverifikasi tanda tangan menggunakan endpoint JWKS (JSON Web Key Set) yang dipublikasikan tanpa perlu berbagi rahasia. ES256 (ECDSA P-256 SHA-256) adalah ekuivalen kurva eliptik dari RS256: model kunci publik/privat yang sama, kunci jauh lebih pendek (256 bit vs minimum 2048 RSA), verifikasi lebih cepat. EdDSA (Ed25519) adalah penerus modern ES256, sedikit lebih cepat dan dengan properti kriptografis yang lebih bersih; didukung di pustaka JWT yang lebih baru tetapi belum universal. none adalah mode "tanpa tanda tangan" yang diizinkan spesifikasi JWT yang telah menyebabkan insiden keamanan di beberapa pustaka ketika implementasi gagal menolak token alg: none: pelajarannya adalah bahwa pemverifikasi JWT harus secara eksplisit memeriksa algoritma cocok dengan yang diharapkan. Generator ini menggunakan HS256 karena hanya memerlukan rahasia bersama daripada pembuatan kunci; untuk penggunaan produksi algoritma asimetris, pustaka sisi server adalah alat yang tepat.
Kapan Anda Perlu Membuat JWT Secara Manual
- Menguji endpoint API. Sebuah API memerlukan JWT di header Authorization: untuk mengujinya secara manual dengan curl, Postman, atau HTTPie, Anda memerlukan token. Buat JWT pengujian dengan bentuk yang tepat, tandatangani dengan rahasia bersama API (di lingkungan dev), dan gunakan hasilnya.
- Mereproduksi bug terkait token. Pengguna melaporkan masalah autentikasi. Rekonstruksi token yang akan mereka terima dengan klaim mereka, periksa tanda tangan, verifikasi logika verifikasi layanan Anda terhadap token yang diketahui-baik dan diketahui-buruk.
- Pengembangan lokal tanpa penyedia auth. Membangun frontend terhadap API yang mengharapkan autentikasi JWT, tetapi Anda belum memiliki akses ke penyedia identitas produksi. Buat JWT pengujian dengan klaim realistis untuk pengembangan.
- Mempelajari format JWT. Decode JWT, ubah klaim, tanda tangani ulang, lihat apa yang dilakukan aplikasi Anda. Loop debugging-dengan-bermain langsung adalah cara sebagian besar pengembang memahami struktur JWT.
- Token layanan-ke-layanan internal. Dua microservice internal berbagi rahasia dan menggunakan JWT untuk mengautentikasi permintaan. Model HS256 rahasia-bersama sesuai di sini; alat ini dapat menghasilkan token secara manual untuk pengujian.
Jebakan Keamanan: Di Mana JWT Salah
JWT memiliki sejarah panjang kesalahan implementasi yang telah menghasilkan insiden keamanan nyata. Serangan "alg: none": pustaka JWT awal menerima token dengan field algoritma diatur ke "none" (tanpa tanda tangan), memungkinkan penyerang memalsukan token apa pun. Pemverifikasi harus secara eksplisit menerapkan algoritma yang diharapkan. Kebingungan algoritma: pemverifikasi yang menerima baik RS256 maupun HS256 dapat ditipu dengan menggunakan kunci RSA publik sebagai rahasia HMAC: penyerang menandatangani dengan HS256 menggunakan kunci publik, pemverifikasi (salah-)memverifikasi dengan HMAC menggunakan kunci publik yang sama. Pemverifikasi harus mengunci algoritma yang diharapkan. Data sensitif dalam payload: klaim JWT dikodekan Base64 tetapi tidak dienkripsi. Siapa pun dengan token dapat membaca setiap klaim. Jangan pernah memasukkan kata sandi, nomor kartu kredit lengkap, atau rahasia lain dalam payload. Tidak ada kedaluwarsa: JWT tanpa klaim exp berlaku selamanya. Selalu tetapkan kedaluwarsa yang wajar (menit untuk token akses, hari untuk token refresh). Tidak ada pencabutan: JWT bersifat self-contained: setelah diterbitkan, mereka tetap valid hingga exp terlepas dari apakah pengguna keluar, mengubah kata sandi, atau akun mereka ditangguhkan. Terima keterbatasan ini, atau pertahankan daftar pencabutan (yang sebagian mengalahkan poin token tanpa-status), atau gunakan token akses berumur pendek dengan rotasi token refresh. Menyimpan di localStorage vs cookie: JWT di localStorage dapat diakses oleh JavaScript apa pun yang berjalan di halaman (risiko XSS); JWT di cookie HttpOnly tidak (tetapi dikirim secara otomatis dengan permintaan lintas-asal, risiko CSRF). Keduanya memiliki trade-off; praktik terbaik modern cenderung ke cookie HttpOnly dengan pembatasan SameSite plus token CSRF.
JWT vs Cookie Sesi vs PASETO
JWT bukan satu-satunya pilihan. Cookie sesi tradisional menyimpan ID sesi yang opaque; server menyimpan status sesi sebenarnya dalam database atau cache. Pro: pencabutan sepele (hapus catatan sisi server), tidak ada risiko membocorkan data klaim, tidak ada kompleksitas tanda tangan. Kontra: memerlukan pencarian penyimpanan sesi pada setiap permintaan (latensi), lebih sulit untuk diskalakan di seluruh layanan. PASETO (Platform-Agnostic Security Tokens, Scott Arciszewski 2018) adalah pengganti JWT yang dirancang untuk menghindari jebakan kebingungan-algoritma dan "none": format berversi, tidak ada negosiasi algoritma, tanda tangan wajib, pilihan cipher yang dibatasi. PASETO telah mendapatkan daya tarik dalam konteks sensitif-keamanan tetapi belum menggantikan JWT dalam ekosistem yang lebih luas. Macaroons (Google, 2014) adalah format token yang lebih fleksibel dengan pembatasan kapabilitas berantai tetapi pada dasarnya hanya riset pada 2026. OAuth 2.1 mengkonsolidasikan praktik terbaik OAuth 2.0: JWT masih merupakan format token akses tipikal. Pilihan pragmatis pada 2026 tetap JWT untuk microservice tanpa-status dan token API, cookie sesi opaque untuk aplikasi web yang dirender server tradisional, dengan PASETO sebagai alternatif modern untuk proyek greenfield baru yang menginginkan default yang lebih kuat.
Pertanyaan yang Sering Diajukan
Bisakah saya men-decode JWT tanpa kunci rahasia?
Ya. Bagian header dan payload JWT hanya dikodekan Base64url, tidak dienkripsi. Anda dapat membaca semua claims tanpa kunci rahasia. Kunci rahasia hanya diperlukan untuk memverifikasi bahwa tanda tangan valid (yaitu, token tidak dirusak).
Apakah aman menempel JWT produksi di sini?
Ya. Alat ini berjalan sepenuhnya di browser Anda, tidak ada data yang dikirim ke server mana pun. Token dan kunci rahasia Anda hanya diproses di lingkungan JavaScript lokal Anda dan tidak pernah dicatat atau ditransmisikan.
Apa perbedaan antara HS256, RS256, dan ES256?
HS256 menggunakan kunci rahasia HMAC bersama (simetris). RS256 dan ES256 menggunakan pasangan kunci publik/pribadi (asimetris), kunci pribadi menandatangani token, dan kunci publik memverifikasinya. Alat ini mendukung algoritma HMAC; untuk verifikasi RS256/ES256 gunakan pustaka sisi server.