Arostik Logo
ArostikVLARCK

Micro-Soluciones Tecnológicas

DESARROLLO & BASES DE DATOS

Decodificador JWT & Validador de Firma

Pega, decodifica, audita, verifica y hasta genera JSON Web Tokens — sin que salgan de tu navegador.

100% local — este token nunca se envía a ningún servidor. Todo se procesa aquí, en tu navegador.

Arquitectura RFC 7519: JSON Web Tokens (JWT)

Estructura Base64Url, claims estándar, algoritmos de firma y seguridad stateless.

Anatomía del JWT (Header, Payload, Signature)

Un JWT se compone de 3 cadenas codificadas en Base64Url separadas por puntos. El Header especifica el algoritmo, el Payload contiene los claims de identidad y la Firma garantiza que los datos no fueron alterados en tránsito.

Simétrico (HS256) vs Asimétrico (RS256 / ES256)

HMAC (HS256) comparte un único secreto entre emisor y receptor. En arquitecturas de microservicios, se prefieren claves asimétricas RSA/ECDSA (RS256/ES256) donde solo el Auth Server firma con llave privada y los servicios verifican con llave pública.

Claims Estándar (exp, iat, nbf, iss, aud)

El RFC 7519 define timestamps en segundos UNIX para `exp` (expiración obligatoria), `iat` (emitido en), y `nbf` (no válido antes de), además de `iss` (emisor confiable) y `aud` (audiencia o cliente previsto).

Access Tokens Cortos + Refresh Tokens

Los Access Tokens JWT deben expirar rápido (5 a 15 min) para minimizar ventanas de riesgo si son interceptados. Para renovar sesión sin pedir login al usuario, se utiliza un Refresh Token persistente almacenado en cookie `HttpOnly`.

Solución de Problemas con JWT, Firmas & Expiración

Diagnóstico y soluciones técnicas para tokens vencidos, firmas inválidas y vulnerabilidades.

Fallo 1

Error 'TokenExpiredError: jwt expired' o Falsos Positivos por Reloj

⚡ Solución Rápida:Genera un nuevo token desde el endpoint `/refresh` o configura una tolerancia de reloj `clockTolerance: 30` (segundos) en `jwt.verify()`.
🔧 Solución Técnica:Sincroniza los relojes de todos tus servidores con el protocolo NTP (Network Time Protocol) y asegúrate de que el payload use segundos (`Math.floor(Date.now() / 1000)`) y no milisegundos.
Fallo 2

Error 'JsonWebTokenError: invalid signature' al Verificar

⚡ Solución Rápida:Pega el secreto en el verificador de esta herramienta para comprobar si coincide con el usado durante la emisión.
🔧 Solución Técnica:Si usas claves RSA/ECDSA, asegúrate de que las variables de entorno no hayan perdido los saltos de línea `\n` en los encabezados `-----BEGIN PUBLIC KEY-----`.
Fallo 3

Vulnerabilidad 'alg: none' y Confusión de Algoritmo Clave Pública

⚡ Solución Rápida:Fuerza explícitamente el algoritmo permitido en el backend: `jwt.verify(token, secret, { algorithms: ['HS256'] })`.
🔧 Solución Técnica:Nunca permitas que la cabecera `alg` del cliente dicte la función de verificación en el servidor; rechaza de inmediato cualquier token con `alg: 'none'` o desalineado con tu política.
Fallo 4

Almacenamiento Inseguro en localStorage y Robo por XSS

⚡ Solución Rápida:Mueve los tokens a cookies con flags `HttpOnly; Secure; SameSite=Strict` para que ningún script JS malicioso pueda leerlos.
🔧 Solución Técnica:Implementa arquitectura 'Token in Memory' en el cliente (guardado en una variable de memoria de React/Vue) y renueva mediante cookie HttpOnly para máxima seguridad contra XSS y CSRF.

¿Sabías que...? Curiosidades del Estándar JWT

La pronunciación oficial 'jot', el límite de 4KB y la paradoja de revocación stateless.

🗣️

La pronunciación oficial de JWT es 'Jot'

En la sección 1 del RFC 7519, los autores estipularon explícitamente: 'The suggested pronunciation of JWT is the same as the English word *jot*'. Sin embargo, en la comunidad de habla hispana es común deletrear J-W-T.

📦

El peligro del límite de 4KB en cabeceras HTTP

Muchos servidores web (como Nginx o Apache) tienen límites por defecto de 4KB a 8KB para el tamaño total de los encabezados HTTP. Colocar demasiados permisos o datos en el Payload de un JWT puede provocar errores `431 Request Header Fields Too Large`.

🔄

La paradoja de revocación: ¿Por qué un JWT es imposible de 'apagar'?

Como el JWT es autocontenido y el servidor no consulta la base de datos para verificarlo, una vez firmado es válido hasta que expire su `exp`. Para revocarlo antes, los sistemas deben recurrir a Redis o listas negras, perdiendo la ventaja stateless.

📜

JOSE: La familia completa de estándares criptográficos

JWT es parte de la suite JOSE (Javascript Object Signing and Encryption) del IETF, que incluye JWS (firmas digitales), JWE (cifrado de payload), JWK (representación de llaves en JSON) y JWA (algoritmos criptográficos).

Glosario de Tokens Web JSON (JWT) & Autenticación

Aprende los conceptos fundamentales, protocolos y términos técnicos de esta herramienta.

JSON Web Token (JWT)Auth

¿Qué es un token JWT?

Estándar abierto (RFC 7519) para transmitir afirmaciones de identidad de forma compacta y autónoma entre partes, firmado digitalmente mediante HMAC o RSA.

Claims (Afirmaciones)Payload

¿Qué son los Claims en un token JWT?

Pares de clave-valor contenidos en el cuerpo (Payload) que describen la identidad del usuario y metadatos del token (ej. `sub` para usuario, `exp` para expiración).

Firma Criptográfica (Signature)Criptografía

¿Para qué sirve la firma de un JWT?

Hash calculado uniendo el Header y Payload con una clave secreta. Si alguien altera un solo carácter del cuerpo, la firma queda invalidada al instante.

Expiración (Claim 'exp')Seguridad

¿Qué es el timestamp 'exp' en un token?

Marca de tiempo en segundos en formato Unix Epoch que determina el momento exacto a partir del cual el token pierde validez y debe renovarse.