Idioma: Español

tools / jwt

jwt/

Decodifica el header y el payload de un JWT y muestra exp / iat / nbf en hora local. Solo decodifica, sin comprobar la firma.

Solo se decodifica; la firma no se verifica. Que la decodificación funcione no significa que el token sea de fiar.

Token

Tiempos

Header

Payload


        

Signature

Original (base64url), sin verificar

      

Preguntas frecuentes

¿Puedo fiarme del contenido decodificado? ¿Esta herramienta verifica la firma?

No, no la verifica. Solo decodifica el Header y el Payload y nunca comprueba la firma, así que una decodificación correcta no significa que el token sea auténtico ni que no haya sido modificado. Verificar una firma requiere la clave secreta o la clave pública y debe hacerse en tu backend con una biblioteca JWT. Además, el Payload solo está codificado en base64url, no cifrado, así que cualquiera que tenga el token puede leerlo; no pongas contraseñas ni otros datos sensibles en él.

¿Qué significa «número de partes incorrecto» o «esto es un JWE»?

Un JWT consta de tres partes, header.payload.signature, unidas por puntos, y cualquier otra cosa dispara el mensaje de número de partes incorrecto. Las causas habituales son una copia incompleta, texto extra copiado junto con el token, o algo que no es un JWT en absoluto, como un ID de sesión o un token aleatorio opaco. Un token con exactamente 5 partes es un JWE, cuyo contenido está cifrado, así que no se puede decodificar aquí.

¿Qué hago ante «no es base64url válido» o «longitud no válida»?

Significa que una de las partes contiene un carácter que no pertenece a un JWT, o que quedó cortada. El mensaje indica qué parte es y, si hay un carácter no permitido, cuál es. JWT usa base64url, que solo tiene letras, dígitos, - y _, y un = final es opcional. La causa más común es una comilla al principio del token; un + o / indica que se usó Base64 normal y hay que sustituirlos por - y _. Una copia cortada suele dar «longitud no válida» o «no es JSON válido».

¿Puedo pegar un token con prefijo Bearer o con saltos de línea?

Sí. Un Bearer inicial se elimina automáticamente (sin distinguir mayúsculas y minúsculas), y los espacios, saltos de línea y tabulaciones dentro del token se ignoran, así que un token copiado de una cabecera de petición o de un log se puede pegar tal cual. Una entrada de más de 1 MB se rechaza directamente; un JWT real suele ocupar entre unos cientos de bytes y unos pocos KB.

¿Qué significan las etiquetas «Caducado», «Aún no válido» y «En el futuro»?

Proceden de tres campos de tiempo del Payload. exp es la hora de caducidad y «Caducado» aparece cuando ya ha pasado; nbf es la hora de inicio y «Aún no válido» aparece antes de ella; iat es la hora de emisión, y «En el futuro» significa que es posterior a ahora, lo que puede indicar que el reloj del emisor y el de tu equipo no coinciden. La fila «Estado» de arriba comprueba primero nbf y luego exp, y muestra «Válido» solo si ambos están bien; eso se refiere solo al tiempo y no dice nada sobre la firma.

Las horas salen desviadas unas horas o el tiempo restante parece incorrecto. ¿Por qué?

La página usa la zona horaria y el reloj de tu equipo, y la zona se muestra después de cada fecha, por ejemplo UTC+08:00. exp, iat y nbf son marcas de tiempo Unix en segundos y no dependen de la zona horaria; otra zona solo cambia cómo se muestra el mismo instante. El tiempo restante se actualiza cada segundo y se calcula con la hora actual de tu equipo, así que un reloj mal ajustado da resultados erróneos. Un valor muy grande, como una marca de tiempo de 13 dígitos en milisegundos, recibe una nota de que JWT usa segundos, y otros campos de tiempo como auth_time no se convierten automáticamente.

¿Puede decodificar tokens firmados con HS256, RS256, ES256 y otros algoritmos?

Sí, todos. Decodificar solo consiste en convertir de nuevo las dos primeras partes en JSON y no tiene nada que ver con el algoritmo de firma. El alg del Header se muestra junto al título, y cuando alg es none se marca como «sin firma». La parte Signature se muestra como el texto base64url original y no se decodifica.

¿Se sube el token que pego?

No. La decodificación se hace en tu navegador y la página no hace ninguna petición que envíe el token a ningún sitio. Aun así, un token suele equivaler a una credencial de inicio de sesión, así que no compartas a la ligera un token activo que siga siendo válido, ni lo pegues en sitios que no conozcas.