Skip to main content
CheckTown
Validadores

Validador JWT: Verifique la estructura y las claims de JSON Web Tokens

Publicado 6 min de lectura
En este artículo

¿Qué es un JWT?

Un JWT (JSON Web Token) es un formato de token compacto y seguro para URL que se usa para transmitir información de forma segura entre partes como un objeto JSON. Definido por RFC 7519, los JWTs son el estándar de facto para la autenticación y autorización en aplicaciones web modernas y APIs.

Los JWTs son autónomos — llevan toda la información necesaria para verificar la autenticidad del token y extraer afirmaciones de usuario sin consultar una base de datos. Esto los hace ideales para la autenticación sin estado en sistemas distribuidos y arquitecturas de microservicios.

Estructura del JWT

Un JWT consta de tres partes codificadas en Base64URL separadas por puntos: header.payload.signature.

  • Header — un objeto JSON que especifica el tipo de token (JWT) y el algoritmo de firma (por ejemplo, HS256, RS256, ES256)
  • Payload — un objeto JSON que contiene afirmaciones: afirmaciones registradas (iss, sub, exp, iat), afirmaciones públicas y privadas
  • Signature — creada firmando el header y el payload codificados con una clave secreta (HMAC) o una clave privada (RSA/ECDSA)

Pruébalo gratis — sin registro

Validar un JWT →

Cómo funciona la validación JWT

La validación de JWT implica verificaciones estructurales, verificación de firma y validación de afirmaciones.

  • Verificación de estructura — el token debe contener exactamente tres segmentos codificados en Base64URL separados por dos puntos
  • Validación del header — el header debe contener campos typ y alg válidos. El algoritmo debe coincidir con lo que espera el servidor
  • Verificación de firma — la firma se recalcula usando el header, el payload y la clave de firma. Si la firma recalculada coincide, el token no ha sido manipulado
  • Validación de afirmaciones — las afirmaciones exp (vencimiento), nbf (no antes de) e iss (emisor) se verifican contra la hora actual y los valores esperados

Casos de uso comunes

Los JWTs impulsan la autenticación y autorización en toda la pila web moderna.

  • Autenticación de API — los clientes incluyen JWTs en los encabezados de Autorización (esquema Bearer) para autenticar solicitudes de API sin sesiones
  • Inicio de sesión único (SSO) — los proveedores de identidad emiten JWTs que múltiples aplicaciones aceptan, habilitando la autenticación fluida entre aplicaciones
  • Tokens de acceso OAuth 2.0 — muchas implementaciones de OAuth usan JWTs como tokens de acceso, codificando alcances y permisos directamente en el token
  • Comunicación entre microservicios — los servicios pasan JWTs para propagar el contexto de usuario y las decisiones de autorización a través de los límites de servicio

Mejores prácticas de seguridad JWT

Los JWTs son potentes pero requieren un manejo cuidadoso para evitar los errores de seguridad comunes.

  • Valide siempre el algoritmo — nunca permita que el campo alg del token dicte qué algoritmo usa su servidor. Esto previene el ataque del algoritmo 'none'
  • Establezca tiempos de vencimiento cortos — los JWTs no se pueden revocar una vez emitidos. Mantenga los tiempos exp cortos (15 minutos para tokens de acceso) y use tokens de actualización para sesiones de larga duración
  • Use algoritmos asimétricos para sistemas distribuidos — RS256 o ES256 permiten a los servicios verificar tokens sin compartir el secreto de firma
  • Nunca almacene datos sensibles en el payload — los JWTs están codificados, no cifrados. Cualquiera puede decodificar el payload. Guarde los secretos en su base de datos, no en el token

Preguntas frecuentes

¿Puede un JWT decodificarse sin la clave secreta?

Sí. Los payloads de JWT están codificados en Base64URL, no cifrados. Cualquiera puede decodificar y leer el header y el payload. La clave secreta solo se necesita para verificar la firma — para confirmar que el token no ha sido alterado.

¿Cuál es la diferencia entre JWS y JWE?

JWS (JSON Web Signature) es lo que la mayoría de las personas entiende por JWT — un token firmado. JWE (JSON Web Encryption) es un token cifrado donde el payload no se puede leer sin la clave de descifrado. La mayoría de los JWTs son tokens JWS.

¿Debo almacenar JWTs en localStorage o en cookies?

Las cookies HttpOnly son más seguras porque no son accesibles mediante JavaScript (previniendo el robo por XSS). localStorage es vulnerable a ataques XSS. Para aplicaciones sensibles, use cookies HttpOnly Secure SameSite.

Herramientas relacionadas