Leer un JWT: afirmaciones visibles no son afirmaciones verificadas
Al desarrollar una integración puede ser útil inspeccionar los campos de un JWT. Leerlos ayuda al diagnóstico, pero no los convierte en hechos probados ni concede permiso para actuar.
Qué puede mostrar la inspección
Una forma compacta de 3 partes permite leer encabezado y carga codificados. Pueden contener el nombre del algoritmo y afirmaciones sobre sujeto, destinatario y vencimiento.
La herramienta muestra esta estructura localmente; no descifra tokens JWE. Que la carga sea legible también significa que incluir información en ella no la oculta a quien tenga el token.
Referencias: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
Decodificar no autentica al emisor
Confiar exige verificación criptográfica y el contexto esperado por la aplicación. Un algoritmo en el encabezado o un permiso en la carga no prueban que procedan del emisor correcto.
Aquí verified=false siempre: no se comprueban firma, identidad del emisor, caducidad ni autorización. Decide accesos mediante el mecanismo de verificación aprobado de la aplicación, no por el texto decodificado.
Referencias: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
Interpreta el tiempo y trata el token con discreción
exp estándar expresa segundos desde el origen Unix, no milisegundos ni fecha local. Mostrar esa fecha no significa que el decodificador la haya comparado con el reloj actual.
No pegues tokens reales en conversaciones, documentación de soporte o capturas públicas. Aprende con datos sintéticos; poder leer uno editado no demuestra que vaya a ser aceptado.
Referencias: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
Ejemplo diagnóstico que no concede permisos
La carga sintética {"sub":"example-reader","exp":1893456000} sitúa exp en 2030-01-01T00:00:00Z. Interpreta un campo, no demuestra que un sistema fiable haya emitido el token.
Una carga legible puede decodificarse aunque la firma sea criptográficamente inválida; el resultado sigue siendo verified=false. Cambiar sub o exp no autoriza el nuevo token, y una firma larga no se verifica a simple vista.