JWT
JWT (JSON Web Token)
Standar terbuka untuk merepresentasikan klaim secara aman antara dua pihak, menggunakan token yang ditandatangani secara digital dan ringkas yang dapat memverifikasi identitas dan izin tanpa query database.
Detail Teknis
Struktur JWT: Header.Payload.Signature, masing-masing di-encode Base64URL. Header: {"alg":"HS256","typ":"JWT"}. Payload berisi klaim: registered (iss, sub, aud, exp, nbf, iat, jti), public (nama IANA), private (kustom). Algoritma tanda tangan: HMAC (HS256/384/512 — kunci simetris bersama), RSA (RS256/384/512 — kunci asimetris), ECDSA (ES256/384/512 — kurva eliptik, tanda tangan lebih kecil), EdDSA (Ed25519 — tercepat). Kerentanan: alg:none (harus ditolak), kebingungan kunci RS↔HS (memverifikasi HMAC dengan kunci publik RSA), pencurian XSS (simpan di httpOnly cookie, bukan localStorage). Pola refresh: token akses berumur pendek (15 menit) + refresh token berumur panjang (7 hari) dengan rotasi. JWE menyediakan enkripsi payload selain penandatanganan.
Contoh
```javascript
// JWT: web API example
const response = await fetch('/api/resource');
const data = await response.json();
console.log(data);
```