JWT (JSON Web Token) = stateless authentication — server không lưu session, verify bằng chữ ký.
Flow:
1. POST /login → server verify credential → ký JWT trả về
2. Client gửi mỗi request: "Authorization: Bearer <token>"
3. Server verify chữ ký → extract claims (sub, roles, exp) → authorizeConfig: bật Resource Server JWT qua oauth2ResourceServer(o -> o.jwt(...)) với jwkSetUri (verify bằng public key), session để STATELESS — code đầy đủ xem câu Security Filter Chain.
Lưu ý quan trọng:
- JWT không revoke được trước khi hết hạn (trừ khi duy trì blocklist).
- Access token: TTL ngắn (15min–1h). Refresh token: TTL dài, lưu DB để revoke được.
- Không đặt sensitive data trong payload — JWT chỉ sign, không encrypt; ai cũng decode được bằng base64.