¿Qué es un JWT?
Un JSON Web Token (JWT, RFC 7519) es una forma compacta y segura para URLs de representar claims (afirmaciones) entre dos partes. Consiste en tres partes codificadas en base64url y separadas por puntos: un header (algoritmo y tipo de token), un payload (los claims propiamente dichos — ID de usuario, expiración, roles, etc.), y una firma (demuestra que el token no fue alterado, si tienes la clave para verificarlo).
Por qué esta herramienta no verifica firmas
Verificar una firma requiere el mismo secreto (para algoritmos HMAC como HS256) o la clave pública del emisor (para algoritmos RSA/ECDSA como RS256/ES256) que se usó para firmar el token — algo que la mayoría de las personas que pegan un token aquí no tendrán a la mano, y algo que esta herramienta no tiene forma de saber que es genuinamente correcto incluso si lo proporcionaras. Decodificar el contenido de un token y verificar su autenticidad son dos operaciones distintas; esta herramienta solo hace la primera. Nunca confíes en los claims de un token como auténticos sin verificar su firma del lado del servidor, usando la clave real del emisor.
Claims comunes
exp— tiempo de expiración (timestamp Unix, en segundos). El token debería rechazarse después de este momento.iat— momento de emisión (issued-at).nbf— not-before; el token no es válido antes de este momento.sub— subject, típicamente un ID de usuario.iss— issuer, quién creó el token.aud— audience, para quién está destinado el token.
Preguntas frecuentes
¿Es seguro pegar un JWT de producción en esta herramienta?
La decodificación ocurre completamente en tu navegador — el token nunca se envía a un servidor. Dicho esto, los payloads de un JWT solo están codificados en base64, no encriptados, así que cualquiera que tenga el token ya puede leer su contenido (con o sin esta herramienta). Trata cualquier JWT con el mismo cuidado que una contraseña si otorga acceso a algo sensible, y evita pegar tokens de sistemas que no controlas en cualquier sitio de terceros, como práctica general.
¿Por qué el payload se ve legible — no se supone que un JWT es seguro?
La firma de un JWT protege su integridad (demuestra que no fue alterado) — no encripta el contenido. El header y el payload son solo JSON codificado en base64url, legible por cualquiera. Si necesitas ocultar los claims mismos, usa un JWE (JSON Web Encryption) o encripta el payload por separado.
¿Qué significa "expired" (expirado) aquí?
Esta herramienta compara el claim exp del token (si está presente) contra la hora actual de tu navegador y lo marca si ese momento ya pasó. Es puramente informativo — una aplicación que hace cumplir la expiración del token realiza la misma verificación del lado del servidor, independientemente de esta herramienta.
¿Esto decodifica un token de jsonwebtoken, jwt-decode o python-jose?
Sí — JWT es un formato estándar (RFC 7519) sin importar qué librería lo firmó. Los tokens producidos por jsonwebtoken de Node, decodificados del lado del cliente por jwt-decode, o emitidos por python-jose de Python, son todos tokens header.payload.signature estructuralmente idénticos, y esta herramienta decodifica cualquiera de ellos de la misma forma.