Verificador JWT
Compruebe si un Web Token JSON es auténtico y sigue vigente. Pegue el token junto con su secreto HMAC, una clave pública PEM, un certificado, una JWK o un JWKS completo; el verificador comprueba la firma con la biblioteca jose, compara exp y nbf con la hora actual y una tolerancia de reloj opcional, y ofrece un veredicto claro junto al encabezado y las declaraciones decodificados. Se rechazan los tokens con alg none.
Preguntas frecuentes
¿Qué comprueba el verificador?
Comprueba la firma con la clave que proporciona y, después, compara las declaraciones exp y nbf con la hora actual. El veredicto solo es válido si la firma coincide y ninguna de las comprobaciones de tiempo falla. Las declaraciones como iss, aud o sub se muestran en la carga útil, pero no se comparan con los valores esperados.
¿Qué claves puedo pegar?
Para HS256, HS384 y HS512, pegue el secreto compartido como texto o como un JWK oct. Para tokens RSA, EC y EdDSA, pegue una clave pública PEM (SPKI o PKCS #1), un certificado X.509, un JWK público o privado, un JWKS con hasta 50 claves o una clave privada PEM, de la que solo se usa la parte pública.
¿Cómo se elige la clave adecuada de un JWKS?
Si el encabezado del token tiene un kid, se usa la clave con el mismo kid del conjunto, y se indica el kid en un error si no hay ninguna coincidencia. Si no hay kid, el conjunto debe contener exactamente una clave. Esto refleja cómo la mayoría de los servidores seleccionan claves de un documento jwks_uri.
¿Qué hace la opción de algoritmo?
Con «Usar el alg del token», el algoritmo se obtiene del encabezado del token, pero la clave debe ser compatible; por tanto, una clave pública RSA nunca puede usarse como secreto HMAC. Elija un algoritmo específico para exigir también que el token lo use, que es lo que debería hacer un servidor al fijar el algoritmo esperado. Si el token usa otro alg, se rechaza y se muestran ambos nombres.
¿Por qué se rechaza un token con alg none?
Un token con alg none no lleva firma, así que no hay nada que verificar y cualquiera podría haberlo creado. Aceptar estos tokens es una vulnerabilidad conocida en bibliotecas JWT. El verificador lo indica como un error en lugar de devolver un resultado válido.
¿Cómo funcionan exp, nbf y la tolerancia del reloj?
Un token se considera caducado cuando exp es igual o anterior a la hora actual, y aún no válido cuando nbf es posterior a la hora actual. La tolerancia del reloj, de 0 a 3600 segundos, amplía ambas comprobaciones para admitir diferencias entre los relojes de los servidores. Si las claims presentes no son numéricas, el token no es válido.
¿Qué significa que una firma no sea válida?
El token no se firmó con la clave que proporcionó, o se modificaron su encabezado o su carga útil después de firmarlo. Compruebe que pegó la clave pública o el secreto correspondiente, con todos sus caracteres exactos, y que copió el token completo. El encabezado y la carga útil decodificados siguen mostrándose para que pueda compararlos.
¿Qué algoritmos son compatibles?
HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 y EdDSA con claves Ed25519. Las claves RSA deben tener al menos 2048 bits. Los tokens cifrados (JWE) no se descifran.
¿Se guarda el token o la clave?
No. El token y la clave se usan solo en memoria para esta verificación y nunca se registran ni se guardan. Es seguro compartir una clave pública, pero trate los secretos HMAC con cuidado y cambie cualquier secreto que sospeche que se haya filtrado.
¿Qué tamaño máximo pueden tener el token y la clave?
Los tokens pueden tener hasta 65,536 caracteres y el campo de clave, hasta 262,144 caracteres, lo que permite incluir documentos JWKS grandes. El token debe tener tres partes base64url separadas por puntos, un encabezado JSON con un miembro alg y un objeto JSON como carga útil.