Token JSON: Pengertian, Format, dan Cara Implementasinya

Token JSON yang dimaksud dalam konteks pengembangan perangkat lunak modern merujuk pada JSON Web Token (JWT), yaitu standar industri (RFC 7519) untuk merepresentasikan klaim secara aman antara dua pihak. Token ini berbentuk string terenkripsi yang terdiri dari tiga bagian: Header, Payload, dan Signature, yang dipisahkan oleh titik (.).

Dalam arsitektur aplikasi berbasis web dan API, token ini digunakan secara masif untuk proses autentikasi (Authentication) dan otorisasi (Authorization). Alih-alih menyimpan sesi pengguna di memori server (stateful), server mengeluarkan token bertanda tangan kriptografis yang disimpan di sisi klien (browser/aplikasi mobile), sehingga server menjadi stateless dan mudah diskalakan.

Struktur Anatomi Token JSON (JWT)

Sebuah token JSON memiliki format visual xxxxx.yyyyy.zzzzz. Berikut adalah rincian komponen penyusunnya:

Bagian Token Fungsi Utama Contoh Data (Base64Url Encoded)
Header Menyatakan jenis token (JWT) dan algoritma enkripsi yang digunakan (misal: HS256). eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload Berisi klaim (claims) atau data pengguna seperti ID, username, hak akses, dan masa berlaku (exp). eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Signature Tanda tangan digital untuk memverifikasi bahwa token tidak dimodifikasi di tengah jalan. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Contoh Implementasi Kode Token JSON

Berikut adalah contoh kode dalam bahasa pemrograman Node.js menggunakan pustaka jsonwebtoken untuk membuat (sign) dan memverifikasi (verify) token JSON.

const jwt = require('jsonwebtoken');

// Kunci rahasia server (simpan di environment variable)
const SECRET_KEY = 'kunci_rahasia_super_aman';

// 1. Membuat Token (Sign)
const payload = {
  userId: 8872,
  role: 'administrator'
};

const token = jwt.sign(payload, SECRET_KEY, { expiresIn: '1h' });
console.log('Generated Token:', token);

// 2. Memverifikasi Token (Verify)
try {
  const decoded = jwt.verify(token, SECRET_KEY);
  console.log('Token Valid. Data User:', decoded);
} catch (err) {
  console.error('Token tidak valid atau kadaluarsa:', err.message);
}

Langkah Kerja Autentikasi Menggunakan Token JSON

  1. Login Pengguna: Klien mengirimkan kredensial (username dan password) ke server melalui endpoint API POST.
  2. Validasi & Pembuatan Token: Server memverifikasi kredensial di database. Jika valid, server menghasilkan token JSON menggunakan kunci rahasia.
  3. Pengiriman ke Klien: Server mengembalikan token tersebut sebagai respons ke klien (browser/aplikasi).
  4. Penyimpanan Klien: Klien menyimpan token di localStorage, sessionStorage, atau sebagai HttpOnly Cookie.
  5. Akses Sumber Daya: Pada setiap permintaan berikutnya ke endpoint terproteksi, klien menyertakan token di dalam HTTP Header menggunakan skema Bearer: Authorization: Bearer <token>.
  6. Verifikasi Server: Server memvalidasi tanda tangan token. Jika sah, server memproses permintaan dan memberikan data yang diminta.

Tips Keamanan Implementasi Token JSON

  • Jangan Simpan Data Sensitif: Payload dapat didekode dengan mudah oleh siapa saja (karena hanya menggunakan enkoding Base64, bukan enkripsi total). Jangan pernah meletakkan kata sandi atau informasi kartu kredit di dalam payload.
  • Gunakan HTTPS: Selalu transmisikan token melalui protokol HTTPS untuk mencegah serangan man-in-the-middle yang mencuri token di jaringan.
  • Tentukan Masa Kedaluwarsa (Exp): Selalu setel waktu kedaluwarsa yang pendek (misalnya 15 menit hingga 1 jam) dan gunakan Refresh Token untuk memperpanjang sesi tanpa harus login ulang.
  • Simpan Secret Key dengan Aman: Jangan pernah menuliskan kunci rahasia (secret key) secara langsung di dalam source code publik seperti GitHub; gunakan environment variables (.env).