Guía
Decodificar un JWT no verifica su firma
Aprende qué información muestra un decodificador JWT, qué comprobaciones faltan y por qué nunca debes confiar en claims sin verificar la firma.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
Decodificar un JWT solo transforma sus segmentos Base64URL en información legible. No demuestra que el emisor sea auténtico, que la firma sea válida ni que el token deba aceptarse. Antes de autorizar una acción, el servidor debe verificar criptografía, algoritmo, emisor, audiencia y claims temporales según su propia política.
Qué hace un decodificador
Un JWT firmado con representación compacta suele tener tres segmentos:
cabecera.payload.firma
Los dos primeros pueden decodificarse sin conocer una clave. Por eso cualquiera
puede leer y también fabricar una cabecera y un payload que digan, por ejemplo,
"role":"admin". Ver esos datos en pantalla no indica que la firma del tercer
segmento corresponda al emisor esperado.
El decodificador JWT de Tools in a Tab sirve para inspeccionar estructura y claims localmente. Señala de forma expresa que no verifica firmas. Tampoco debes pegar tokens de producción en servicios que no controles; un token puede contener identificadores o permisos aunque su contenido no esté cifrado.
Qué debe verificar el sistema que confía en el token
El RFC 8725 recoge prácticas de seguridad para JWT. Entre las comprobaciones importantes están:
- permitir solo los algoritmos previstos y no aceptar el que proponga el token sin una política;
- validar la firma con la clave correcta;
- comprobar que
issidentifica al emisor esperado; - comprobar que
audincluye al destinatario correcto; - aplicar
exp,nbfy cualquier requisito propio del protocolo; - usar reglas distintas para tipos de JWT que no sean intercambiables.
Una biblioteca mantenida puede ejecutar estas operaciones, pero necesita una configuración segura. «La función no devolvió error» tampoco sustituye a revisar qué algoritmo, claves y claims se exigieron.
Ejemplo de decisión correcta
Si el payload afirma que exp vale 1786204800, puedes usar el
conversor de timestamp Unix
para entender la fecha. Esa conversión solo explica el número. La aceptación
real requiere que un verificador confirme primero la firma y después compare
exp con el reloj y la tolerancia definidos por el servidor.
Regla práctica
Usa la decodificación para depurar y comprender. Usa una verificación criptográfica completa, en el componente que toma la decisión, para confiar. Nunca concedas acceso desde datos que solo has leído del payload.