¿Por qué un JWT Debugger PRO?
Un JWT (JSON Web Token) es un estándar muy usado en autenticación y autorización moderna: APIs REST, microservicios, apps móviles y SSO. El problema es que, cuando algo falla, el error suele ser poco claro: "token invalid", "signature verification failed", "token expired"… y tu equipo acaba perdiendo tiempo entre logs, relojes desincronizados y claves mal formateadas.
Este depurador PRO está pensado para escenarios reales: además de decodificar header y payload,
verifica la coherencia temporal (exp, nbf, iat) y te ayuda a comprobar la firma tanto en
HS256 (HMAC con secret compartido) como en RS256 (RSA con clave privada/pública) y
JWK/JWKS (catálogos de claves por kid).
Alertas de seguridad
- alg=none: tokens sin firma (riesgo si el backend lo acepta).
- Algorithm mismatch: header declara HS* pero el backend verifica RS* (o viceversa).
- kid ausente o duplicado en JWKS.
- exp demasiado largo o inexistente.
Examples prácticos con código
Consejo: usa los ejemplos para reproducir exactamente el algoritmo y detectar dónde difiere tu backend.
// Node.js (jsonwebtoken) - verificar RS256
import jwt from "jsonwebtoken";
import fs from "fs";
const token = "TU_JWT";
const pub = fs.readFileSync("./public.pem", "utf8");
const payload = jwt.verify(token, pub, { algorithms: ["RS256"] });
console.log(payload);
// PHP (firebase/php-jwt) - verificar HS256
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
$token = "TU_JWT";
$secret = "TU_SECRET";
$decoded = JWT::decode($token, new Key($secret, 'HS256'));
var_dump($decoded);
# cURL - obtener JWKS (ejemplo)
curl -s https://TU-DOMINIO/.well-known/jwks.json | jq
Enlazado interno recomendado
Si estás depurando tokens, te vendrá bien complementar con Validador de JSON para revisar JWK/JWKS, con Base64 para inspeccionar segmentos y con el Generador de Hash para comparar huellas.
FAQ
¿Mi token está cifrado?
No. El JWT estándar está firmado, no cifrado. El contenido del payload es legible (Base64URL) salvo que uses JWE.
¿Por qué falla RS256 si el payload se ve bien?
Normalmente por clave pública incorrecta, formato PEM inválido, kid no coincide con JWKS o token alterado por espacios/saltos de línea.
¿Esto envía mis tokens a un servidor?
No. La herramienta funciona en el navegador; evita pegar tokens reales de producción si contienen datos sensibles.