autenticacion
Estrategias Profesionales con
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.)
- algoritmo (
- 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:
expcortonbfyiataudyissverificados 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
- Mecanismo para firmar data.
- Garantiza integridad y autenticidad sin cifrado.
- JSON Web Signature permite tokens firmados con algoritmos:
- HMAC (HS256…)
- RSA (RS256…)
- ECDSA (ES256…)
- RSA-PSS (PS256…)
- Recursos:
JWE — Encryption
- JSON Web Encryption: cifrado + integridad.
- Adecuado para transmitir información sensible dentro del JWT.
- Soporta cifrado híbrido (clave de contenido + clave pública del receptor).
- Recursos:
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
audpara 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
kidexiste 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#S256jktkiddiná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
jtiysuben correlación de logs - análisis de anomalías en firmas
- incluir
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
¿Te gusta este contenido? Suscríbete vía RSS