JWT

Concepto General

  • JSON Web Tokens: mecanismo compacto para compartir data, transportar identidades y claims entre partes de forma segura.
  • Basados en el estándar JOSE (JSON Object Signing and Encryption).
  • Usan clave pública/privada o claves simétricas según el tipo de firma o cifrado.
  • Componentes:
    • JOSE Header: metadatos sobre algoritmo, tipo y parámetros.
    • JWS Payload: claims (estándar, públicos, privados).
    • JWS Signature: validación de integridad frente a alteraciones.

Enlaces:

  • [JSON Web tokens (JWT): claves para usarlos de manera segura BBVA](https://www.bbva.com/es/innovacion/json-web-tokens-jwt-claves-para-usarlos-de-manera-segura/)
  • [Qué es Json Web Token y cómo funciona OpenWebinars](https://openwebinars.net/blog/que-es-json-web-token-y-como-funciona/)
  • [¿Qué es JSON Web Token? KeepCoding](https://keepcoding.io/blog/que-es-json-web-token/)
  • RFC 7515 - JSON Web Signature (JWS)

Estructura del JWT

  • Header
    • algoritmo (alg)
    • tipo (typ: “JWT”)
    • parámetros JOSE adicionales (kid, cty, etc.)
  • Payload
    • claims estándar (iss, sub, aud, exp, nbf, iat, jti)
    • claims personalizados para negocio
    • evitar incluir data sensible sin cifrado
  • Signature
    • firmada usando JWS
    • garantiza integridad y autenticidad

Seguridad y Buenas Prácticas

  • Usar algoritmos seguros: ES256/ES384/ES512, RS256/RS512, PS256/PS512.
  • Evitar HS256 para escenarios de alta exposición cuando sea posible.
  • Rotación de claves con JWK / JWKS.
  • Tokens deben tener:
    • exp corto
    • nbf y iat
    • aud y iss verificados siempre
  • Almacenamiento:
    • evitar localStorage en navegadores sensibles al XSS
    • preferir cookies HttpOnly + Secure + SameSite
  • Validar siempre:
    • firma
    • algoritmo permitido
    • expiración
    • emisor y audiencia
  • Para data sensible → usar JWE en lugar de JWT plano.

Modos JOSE Relacionados

  • What is JWT, JWS, JWE, and JWK

JWS — Signature

JWE — Encryption

JWK — Key Set

  • Formato JSON para representar claves públicas/privadas.
  • JWKS: conjunto de JWKs que se expone vía HTTPS para permitir rotación y descubrimiento automático.
  • Usado para:
    • verificar firmas de JWT
    • distribuir claves de confianza
    • facilitar Key Rotation sin afectar a clientes
  • Recursos:

Opciones Avanzadas

  • Token Binding: asociar el token a un canal TLS.
  • Detección de Replay: jti + persistencia de IDs + exp cortos.
  • Signed + Encrypted (Nested JWT): combinación JWE(JWS(payload)).
  • Proof-of-Possession JWT (PoP-JWT): el token requiere demostrar posesión de una clave.
  • Detached JWS: firma separada del payload para grandes cargas.

JWT Avanzado — Extensión de Conceptos

JWA — JSON Web Algorithms

  • Estándar que define algoritmos de firma, cifrado y hashing usados en todo el ecosistema JOSE.
  • Categorías clave:
    • Algoritmos de firma: RSASSA, ECDSA, RSA-PSS.
    • Algoritmos de cifrado: A128GCM, A256CBC-HS512.
    • Algoritmos de intercambio de claves: ECDH-ES.
  • Importancia:
    • Determina compatibilidad multiplataforma.
    • Define seguridad mínima y algoritmos permitidos.
    • Base para políticas de hardening de JWT.

Enlace: RFC 7518.

JWK Thumbprint

  • Hash único (digest SHA-256 usualmente) que representa una clave JWK.
  • Permite:
    • Identificación inequívoca de una clave sin exponerla.
    • Asociar tokens a claves específicas.
    • Firmar objetos que incluyan el thumbprint como claim (ej. PoP).
  • Útil en:
    • Integraciones federadas.
    • Rotación agresiva de claves (Key Cycling).
    • Validaciones de cliente en OAuth2 y OpenID Connect.

Estrategias Profesionales con jti (Unique Token ID)

  • Evita replay attacks en sistemas sensibles.
  • Patrones de uso:
    • Persistencia en Redis con TTL = exp del token.
    • Bloqueo temporal por jti para flujos críticos de corta duración.
    • Revocación selectiva sin invalidar sesión completa.
  • Extensiones:
    • jti + fingerprint del cliente
    • jti + binding del canal TLS
    • jti para correlación en auditoría distribuida

Nested JWT (JWE(JWS(payload)))

  • Combinación de firma + cifrado.
  • Uso:
    • Firmar el contenido para garantizar autenticidad.
    • Cifrar el token completo para ocultar claims sensibles.
  • Ventaja:
    • Transferencia segura en entornos con múltiples hops y proxies.
  • Relevante en:
    • banca
    • eIDAS
    • sistemas regulados (PCI, HIPAA)

PoP Tokens (Proof-of-Possession)

  • El token requiere demostrar que el cliente posee una clave secreta adicional.
  • Diferencias con los Bearer Tokens:
    • No basta con robar el token.
    • Requiere prueba criptográfica asociada.
  • Casos:
    • APIs de alta criticidad.
    • Transacciones firmadas de forma independiente.
    • Microservicios con identidad fuerte.

DPoP — Demonstrating Proof of Possession

  • Estándar emergente para OAuth2.
  • El cliente firma cada request HTTP con una clave privada.
  • Previene:
    • replay entre endpoints
    • tokens robados en clientes públicos
  • Estructura:
    • DPoP Header (alg + jwk)
    • DPoP Payload (htm, htu, jti, iat)
    • Firma JWS

JWT Profile for OAuth2 / OIDC (IETF)

  • Perfiles que definen:
    • Cómo estructurar claims obligatorios.
    • Qué algoritmos deben usarse.
    • Políticas para aud, iss, exp, nbf, sub.
  • Importante para:
    • interoperabilidad
    • cumplimiento de estándares
    • evitar configuraciones débiles

Authorization Server Metadata

  • Descubrimiento automático vía:
    • /.well-known/openid-configuration
    • /.well-known/oauth-authorization-server
  • Expone:
    • JWKS endpoint
    • Algoritmos soportados
    • Políticas de token
    • Métodos de autenticación de cliente
  • Habilita:
    • Rotación automática de claves
    • Validación basada en metadatos
    • Integración sin configuración manual

JWT en Arquitecturas Zero-Trust

  • Rol clave:
    • Identidad verificable por cada hop.
    • Firmas fuertes con validación descentralizada.
  • Prácticas:
    • TTL muy corto + Refresh Tokens fuera del perímetro.
    • PoP o DPoP para servicios internos.
    • Validación estricta de aud para microservicios.

Signed HTTP Requests (JWS over HTTP)

  • Sustituye a API keys estáticas.
  • Cada request va firmada:
    • método
    • path
    • fecha
    • cuerpo (hash)
  • Beneficios:
    • No repudio
    • No captura de credenciales
    • Mensajes autenticados punto a punto
  • Relación con JWS:
    • Se usa JWS Detached (solo firma, sin embed del payload completo).

JWT en WebAuthn / FIDO2

  • WebAuthn usa COSE, pero interoperan con ecosistemas JWT mediante:
    • assertions firmadas
    • claves públicas almacenadas en JWKS
    • validadores basados en JOSE
  • Se usa en:
    • autenticación passwordless
    • acceso fuerte sin secretos compartidos

Ataques Modernos Específicos a JWT

  • Algorithm Confusion (alg=none / casper attacks)
  • Key Injection en JWKs públicos
  • Mix-Up attacks entre Authorization Servers
  • Key-ID Spoofing (kid traversal)
  • Replay en entornos multihop sin binding
  • Cross-tenant key confusion en nubes

Protección Avanzada

  • Validar que kid existe en el JWKS.
  • Validar que el algoritmo del header coincide con el esperado.
  • Usar JWK Thumbprints para detectar claves alteradas.
  • Rotación continua con:
    • x5t#S256
    • jkt
    • kid dinámicos
  • Cifrado de claims sensibles con JWE incluso dentro de entornos internos.

JWT en Integraciones Empresariales

  • Patrones:
    • Delegación entre microservicios (Service-to-Service JWT)
    • JWT exchange (RFC 8693)
    • JWT assertion grants para autenticación de cliente
  • Uso en:
    • pagos
    • verificación de identidad
    • auditoría con no repudio

Monitorización y Observabilidad

  • Métricas útiles:
    • ratio de tokens expirados
    • fallo en validación por aud/iss
    • uso de claves rotadas
    • revocaciones por jti
  • Trazabilidad:
    • incluir jti y sub en correlación de logs
    • análisis de anomalías en firmas

Hardening Operativo

  • Políticas:
    • deshabilitar HS256 si no hay razones fuertes
    • permitir solo PS256/ES256
    • expiraciones < 15 minutos en entornos web
    • refresh tokens en canales reforzados
  • Mitigaciones:
    • Enforced TLS 1.3
    • Token Binding opcional
    • Nested JWT en entornos de terceros