
Stateless: Server yang Pelupa
Protokol HTTP (dunia internet) pada dasarnya mengidap penyakit *Amnesia* (Stateless). Jika kamu Login di halaman Beranda, lalu kamu berpindah ke halaman Profil, Server akan lupa siapa dirimu dan menyuruhmu Login lagi. Di masa lalu, kita memakai Session (Server menyimpan ingatan di memori RAM-nya). Namun ini membebani server.
Di era modern (Mobile App & React), kita menggunakan JWT (JSON Web Token). JWT memungkinkan *Server* tidak perlu mengingat apapun! Server cukup memberikan sebuah "KTP Digital Bertanda Tangan" kepada pengguna.
Struktur Fisik Sebuah JWT
Jika kamu pernah melihat JWT, bentuknya adalah sebuah teks (String) rongsokan yang sangat panjang dan selalu dipisahkan oleh Dua Buah Tanda Titik. Bentuknya: aaaaa.bbbbb.ccccc.
Bagian 1: Header (aaaaa)
Bagian pertama ini hanyalah teks biasa (di-encode dengan Base64) yang memberitahu bahwa, "Hai, ini adalah token berjenis JWT dan saya diamankan dengan algoritma HS256."
Bagian 2: Payload / Isi Tas (bbbbb)
Ini adalah bagian terpenting tempat kita menyimpan informasi. Di dalam Payload ini, kita menyelipkan data-data identitas ringan pengguna (Misal: { "id": 1, "role": "admin" }).
PERINGATAN: Payload ini BISA DIBACA OLEH SIAPAPUN (Transparan). Jadi JANGAN PERNAH menyelipkan *Password* atau data kartu kredit ke dalam Payload JWT!
Bagian 3: Signature / Tanda Tangan (ccccc)
Ini adalah sihir pengamannya. Bagian ketiga ini tercipta dari gabungan Header + Payload + SEBUAH KATA SANDI RAHASIA SERVER. Kata sandi server ini (Secret Key) HANYA diketahui oleh komputer *Backend*-mu (Disimpan di file .env).
Bagaimana JWT Bekerja Mencegah Penipuan?
Misalkan *Hacker* Budi (ID: 2) berhasil mencuri JWT miliknya sendiri. Budi iseng meng-decode bagian Payload-nya, lalu memalsukannya (mengganti tulisan "id": 2 menjadi "id": 1 milik Admin).
Saat Budi mengirimkan JWT palsu itu ke Server, apa yang terjadi? Server akan menolaknya mentah-mentah!
Kenapa? Karena saat Payload-nya diubah, Bagian Ke-3 (Tanda Tangannya) sudah tidak cocok lagi secara matematika! Budi tidak bisa membuat Tanda Tangan yang baru karena ia TIDAK TAHU apa Secret Key yang ada di servermu. Keren, bukan?
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates