Memahami Struktur JSON Web Token (JWT)
JSON Web Token (JWT) adalah standar terbuka (RFC 7519) yang mendefinisikan cara ringkas dan mandiri untuk mengirimkan informasi secara aman antara berbagai pihak sebagai objek JSON. Informasi ini dapat diverifikasi dan dipercaya karena ditandatangani secara digital. JWT umumnya digunakan untuk otorisasi dan pertukaran informasi dalam arsitektur web modern.
Sebuah JWT standar terdiri dari tiga bagian yang dipisahkan oleh tanda titik (.). Ketiga bagian tersebut adalah:
- Header: Berisi metadata tentang token, termasuk jenis token dan algoritma enkripsi yang digunakan.
- Payload: Berisi klaim (claims) atau informasi yang ingin dikirimkan, seperti identitas pengguna dan izin akses.
- Signature (Tanda Tangan): Digunakan untuk memastikan bahwa pengirim JWT adalah pihak yang benar dan untuk memastikan bahwa pesan tidak diubah di tengah jalan.
Setiap bagian dari JWT dikodekan menggunakan format Base64URL sebelum digabungkan menjadi satu string. Format Base64URL memodifikasi skema Base64 standar dengan mengganti karakter + dengan - dan / dengan _, serta menghilangkan karakter pengisi = agar string aman digunakan dalam URL.
Cara Kerja Decoder JWT
Alat Decoder JWT dirancang untuk memisahkan ketiga bagian token secara instan dan menerjemahkan kembali string Base64URL menjadi teks JSON yang dapat dibaca manusia. Saat Anda memasukkan token ke dalam kolom Tempelkan JWT Anda, alat ini akan menghitung jumlah karakter yang dimasukkan dan langsung memproses string tersebut.
Proses dekode dilakukan melalui beberapa tahapan validasi otomatis:
- Pemeriksaan Format: Alat memastikan input memiliki tiga bagian yang dipisahkan oleh titik. Jika format ini tidak terpenuhi, sistem akan menampilkan pesan kesalahan "Bukan JWT yang valid — harus terdiri dari tiga bagian yang dipisahkan oleh titik.".
- Pemeriksaan Panjang Input: Jika string yang dimasukkan melebihi batas wajar untuk sebuah token, alat akan memunculkan pesan "Terlalu panjang untuk menjadi JWT yang valid.".
- Dekode Base64URL: Alat mencoba mendekode bagian Header dan Payload. Jika proses ini gagal karena karakter yang tidak valid, pesan kesalahan seperti "Tidak dapat mendekode header — Base64URL tidak valid." atau "Tidak dapat mendekode payload — Base64URL tidak valid." akan muncul.
- Validasi JSON: Setelah didekode dari Base64URL, teks harus berupa format JSON yang valid. Jika struktur JSON rusak, alat akan menampilkan "Header bukan JSON yang valid." atau "Payload bukan JSON yang valid.".
Jika semua tahapan validasi berhasil, status akan berubah menjadi "Token berhasil didekode." dan area hasil dekode akan menampilkan informasi terstruktur. Jika input dibersihkan dengan Bersihkan, fokus akan kembali ke kolom input dan status kembali ke "Siap. Tempelkan JWT untuk mendekodenya.".
Membaca Informasi Header dan Payload
Setelah proses dekode berhasil, alat akan menampilkan isi dari Header dan Payload secara terpisah dalam format JSON yang rapi, serta mengekstrak beberapa informasi kunci:
Metadata Header
- Algoritma: Menunjukkan algoritma kriptografi yang digunakan untuk menandatangani token, seperti HS256 (HMAC menggunakan SHA-256) atau RS256 (RSA menggunakan SHA-256).
- Tipe: Menunjukkan tipe dari token, yang biasanya bernilai "JWT".
Klaim Payload dan Waktu
Payload berisi klaim yang memberikan konteks mengenai token tersebut. Beberapa klaim standar yang berkaitan dengan waktu meliputi:
- Diterbitkan pada (
iat): Menunjukkan waktu kapan token tersebut diterbitkan. - Kedaluwarsa (
exp): Menunjukkan batas waktu kapan token tersebut tidak boleh lagi digunakan atau dianggap kedaluwarsa.
Alat ini membaca klaim waktu tersebut dan menampilkan status validitas token berdasarkan waktu saat ini. Status yang dapat muncul pada badge meliputi:
- Valid: Token masih berada dalam masa berlaku aktif.
- Kedaluwarsa: Waktu saat ini telah melewati nilai klaim
exp. - Belum valid: Token memiliki klaim waktu aktif di masa depan dan belum bisa digunakan.
- Tanpa kedaluwarsa: Token tidak memiliki klaim
expdi dalam payload-nya.
Perbedaan Antara Dekode dan Verifikasi
Satu hal penting yang perlu dipahami oleh pengembang, insinyur dukungan, dan penguji keamanan adalah perbedaan mendasar antara mendekode (decoding) dan memverifikasi (verifying) sebuah JWT.
| Aktivitas | Deskripsi | Kebutuhan Data | Tujuan |
|---|---|---|---|
| Dekode | Menerjemahkan string Base64URL kembali menjadi teks JSON asli agar dapat dibaca. | Hanya string JWT itu sendiri. | Membaca informasi metadata dan klaim di dalam token. |
| Verifikasi | Memastikan bahwa tanda tangan JWT sah dan token tidak dimodifikasi oleh pihak ketiga. | String JWT beserta signing secret (untuk algoritma simetris) atau public key (untuk algoritma asimetris). | Menjamin integritas dan keaslian token sebelum menerima akses pengguna. |
Alat Decoder JWT ini hanya melakukan dekode dan tidak memverifikasi tanda tangan token. Alat ini juga tidak meminta atau menyimpan kunci rahasia (signing secret) atau kunci publik (public key) Anda. Oleh karena itu, terdapat catatan penafian "Ini hanya memeriksa klaim exp — tidak memverifikasi tanda tangan, penerbit, atau audiens." pada hasil analisis. Mengabaikan verifikasi tanda tangan dalam lingkungan produksi merupakan celah keamanan serius, karena siapa saja dapat mengubah isi payload dan membuat token palsu yang tampak valid saat didekode.
Privasi dan Keamanan Pemrosesan Data
Keamanan data sensitif yang terdapat di dalam JWT Anda adalah prioritas utama. Alat ini beroperasi dengan prinsip pemrosesan lokal:
- Pemrosesan di Sisi Klien: Seluruh proses pemisahan string, dekode Base64URL, analisis struktur JSON, hingga pembacaan klaim waktu dilakukan sepenuhnya di dalam browser web Anda.
- Tanpa Unggah Data: Token Anda didekode langsung di browser Anda. Tidak ada yang diunggah ke BroBroGo. Data Anda tidak pernah dikirimkan ke server luar, sehingga aman dari risiko penyadapan transmisi data.
Pertanyaan yang Sering Diajukan (FAQ)
Apakah aman menempelkan JWT saya di sini?
Ya. Proses dekode sepenuhnya terjadi di browser Anda — token Anda tidak pernah dikirim ke BroBroGo.
Apakah alat ini memverifikasi tanda tangan?
Tidak. Alat ini hanya mendekode header dan payload untuk Anda baca. Memverifikasi tanda tangan memerlukan signing secret atau public key, yang tidak pernah diminta oleh alat ini.
Bagaimana cara mengetahui jika token saya telah kedaluwarsa?
Decoder membaca claim 'exp' dan menampilkan badge status — valid, kedaluwarsa, belum valid, atau tanpa kedaluwarsa — di samping token yang didekode.