desarrolloseguridadautenticación

Qué es un token JWT y cómo decodificarlo sin código

Los JSON Web Token aparecen en todos los sistemas de autenticación modernos, pero poca gente sabe qué llevan dentro. Aprende cómo se estructura un JWT, qué significa cada parte y cómo leerlo al instante en tu navegador.

·6 min de lectura

¿Qué es un JWT?

Un JSON Web Token (JWT) es una cadena compacta y segura para URL que sirve para transmitir información entre dos partes. Los encontrarás en cabeceras de autorización, en cookies y en parámetros de consulta de prácticamente cualquier aplicación web moderna. Tienen el aspecto de tres cadenas codificadas en Base64 unidas por puntos:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTcxNTAwMDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Eso es todo: tres partes separadas por puntos.

Las tres partes

**Parte 1: la cabecera** El primer segmento se decodifica en un objeto JSON que describe el tipo de token y el algoritmo de firma:

{"alg": "HS256", "typ": "JWT"}

Algoritmos habituales: HS256 (HMAC-SHA256, clave simétrica), RS256 (RSA, asimétrico) y ES256 (ECDSA). El algoritmo le dice a quien verifica cómo comprobar la firma.

**Parte 2: el contenido** El contenido es la parte más útil. Lleva las llamadas afirmaciones: pares de clave y valor que dicen algo sobre la persona usuaria o sobre la sesión:

{"sub": "user_123", "email": "user@example.com", "role": "admin", "iat": 1714000000, "exp": 1715000000}

  • sub: el sujeto (normalmente un identificador de usuario)
  • iat: fecha de emisión (timestamp Unix)
  • exp: fecha de caducidad (timestamp Unix), la más importante de comprobar
  • iss: quién emitió el token
  • aud: qué servicio debería aceptarlo

**Parte 3: la firma** La firma la calcula el servidor que emite el token con una clave secreta o una clave privada. Sin esa clave no puedes crear una firma válida, pero sí puedes leer la cabecera y el contenido igualmente.

Por qué puedes leer un JWT sin tener la clave

Los JWT están codificados en Base64url, no cifrados. La cabecera y el contenido solo están codificados, no protegidos frente a la lectura. La firma únicamente impide la *manipulación*, no oculta lo que hay dentro. Es un malentendido muy extendido: **nunca guardes datos sensibles (contraseñas, información de pago) en el contenido de un JWT**. Cualquiera que tenga la cadena del token puede decodificarla y leerla.

Cómo decodificar un JWT en segundos

Pega cualquier JWT en el decodificador de NoxaKit. Separa el token en sus tres partes, decodifica cada segmento, da formato al JSON y convierte las marcas iat y exp en fechas legibles, para que veas al momento cuándo se emitió y cuándo caduca.

Útil para depurar fallos de autenticación, comprobar qué afirmaciones envía tu servidor, verificar la caducidad de un token e inspeccionar tokens de terceros durante una integración.

Lista de comprobación de seguridad al trabajar con JWT

1. **Comprueba exp lo primero**: los tokens caducados se rechazan de inmediato 2. **Verifica iss y aud**: un token de un servicio no debería aceptarlo otro distinto 3. **No aceptes nunca alg: none**: algunas bibliotecas aceptaron históricamente tokens sin firmar 4. **Usa caducidades cortas**: de 15 a 60 minutos para los tokens de acceso, con tokens de refresco para sesiones más largas 5. **Guarda los tokens donde toca**: las cookies httpOnly protegen mejor frente a XSS que el almacenamiento local

Crear JWT para tus pruebas

El constructor de JWT de NoxaKit te permite montar tokens con el contenido que quieras y firmarlos con un secreto HMAC-SHA256, algo muy práctico para escribir datos de prueba de integración o depurar la lógica de verificación sin montar un servidor de autenticación completo.

Prueba estas herramientas gratuitas

Más artículos