🎟️

JWT

JWT (JSON Web Token) es un estándar abierto (RFC 7519) para transmitir información entre dos partes de forma segura como un objeto JSON firmado digitalmente. Es el formato más usado para autenticación en APIs modernas, single sign-on (SSO) y autorización en sistemas distribuidos.

Ejemplos

  • eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikp1YW4gUMOpcmV6IiwiYWRtaW4iOnRydWV9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Authorization: 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.