Ejemplos
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikp1YW4gUMOpcmV6IiwiYWRtaW4iOnRydWV9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cAuthorization: Bearer {jwt_token}Refresh token flow: access token (15min) + refresh token (7 días)
Preguntas frecuentes
¿JWT es encriptado o solo firmado?
Por default es solo firmado (JWS). El payload es visible en Base64. Si necesitás encriptación, usá JWE (JSON Web Encryption), pero es menos común y más complejo.
¿Cómo invalido un JWT antes de que expire?
JWT es stateless, no podés invalidarlo directamente. Soluciones: (1) expiración corta + refresh tokens, (2) blacklist en Redis, (3) token versioning con claim jti. Todas agregan estado en servidor.
¿Es seguro almacenar JWT en localStorage?
Vulnerable a XSS. Si un script malicioso se ejecuta, puede leer localStorage. Alternativa más segura: HttpOnly cookies (protegen contra XSS pero necesitás CSRF tokens). Ideal: cookies HttpOnly + SameSite=Strict.