Membedah Anatomi JWT: Header, Payload, dan Signature
JSON Web Token, atau JWT, sekilas tampak seperti serangkaian karakter acak yang panjang. Namun, di balik kerumitannya, terdapat struktur yang logis dan terdefinisi dengan baik. Setiap JWT terdiri dari tiga bagian utama, yang dipisahkan oleh tanda titik (.):
- Header: Bagian pertama ini adalah objek JSON yang berisi metadata tentang token itu sendiri. Umumnya, header memiliki dua properti:
alg(algoritma) yang digunakan untuk menandatangani token, sepertiHS256atauRS256, dantyp(tipe) yang hampir selalu bernilaiJWT. - Payload: Bagian kedua ini juga merupakan objek JSON dan merupakan inti dari token. Payload berisi "klaim" (claims), yaitu pernyataan tentang suatu entitas (biasanya pengguna) dan data tambahan. Klaim ini bisa berupa informasi standar seperti ID pengguna (
sub), waktu kedaluwarsa (exp), atau data kustom seperti peran pengguna (role). - Signature: Bagian terakhir ini adalah tanda tangan digital. Signature dibuat dengan menggabungkan header yang telah di-encode, payload yang di-encode, sebuah kunci rahasia (secret key), lalu menjalankannya melalui algoritma yang ditentukan di header. Tanda tangan ini memastikan bahwa data di dalam token tidak diubah oleh pihak yang tidak berwenang.
Untuk membuat string JWT yang ringkas, bagian header dan payload di-encode menggunakan format Base64Url. Ini bukan enkripsi, melainkan hanya metode representasi data biner dalam format teks. Oleh karena itu, siapa pun dapat mendekode dan membaca isinya. Alat Dekoder JWT kami melakukan persis hal ini: mengambil string JWT, memisahkan header dan payload, lalu mengubahnya dari format Base64Url menjadi JSON yang mudah dibaca dan diformat dengan rapi.