Verificador de firmas JWT

Inspecciona un JWT y verifica su firma con un secreto HMAC o una clave pública JWK o JWKS. Indica el emisor o la audiencia esperados para comprobarlos también; decodificar el token no verifica su autenticidad.

Se ejecuta localmente en tu navegador
LOCAL CRYPTOjose 6.2.10HS · RS · PS · ES · EdDSAWeb Crypto API
Los JWT, secretos HMAC y materiales JWK se procesan en este navegador. El verificador no descarga una URL JWKS, no envía tokens y no conserva material de claves al terminar la sesión.
JWT compacto
Material de verificación

Para HS256/384/512, introduce el secreto compartido sin transformar. Para algoritmos asimétricos, pega un JWK público o un documento JWKS JSON.

Resumen de claims
Cabecera y payload protegidos
Decode or verify a compact JWT to inspect its protected header and payload.

Decodificar no equivale a verificar

Cualquiera puede decodificar el payload de un JWT. Confía en el token solo después de verificar correctamente la firma con el algoritmo y la clave previstos, además de issuer, audience, tiempo y claims de la aplicación.

Cómo inspeccionar y verificar un token

Pega un JWT compacto y la herramienta muestra su cabecera protegida y su payload, y después verifica la firma con el material que le des: un secreto compartido en claro para HS256/384/512, o un documento JWK o JWKS público para RS, PS, ES y EdDSA. En la misma pasada puedes comprobar el emisor o la audiencia esperados.

Decodificar no es verificar. La página decodifica en local y lo dice, y solo informa de un token como verificado cuando pasan la firma y las claims registradas (exp, nbf, iss, aud). No se sube nada, no se descarga ninguna URL de JWKS y el material de clave no se guarda.

  1. Pega el JWT compacto en el campo del token. El primer clic carga el módulo jose, así que el primer resultado tarda un momento.
  2. Pega el material de clave: el secreto compartido en claro para HS256/384/512, o el JWK público o el documento JWKS para los algoritmos asimétricos. El campo del secreto se recorta antes de usarlo y sus bytes se toman como UTF-8.
  3. Pulsa Inspeccionar token para leer la cabecera y el payload sin confiar en ellos, o Verificar firma para comprobar la firma y las claims registradas.
  4. Rellena Emisor esperado y Audiencia esperada cuando el token deba estar vinculado a ellos; déjalos vacíos para omitir esas comprobaciones.
  5. Cargar ejemplo ES256 local crea un par de claves efímero en la página, firma un token con él y lo verifica, para que veas una verificación correcta sin aportar ninguna clave. Limpiar vacía los campos.

Qué comprueba el verificador

Decodificar y para qué sirve

Inspeccionar token pasa el payload por un decodificador JWT e imprime la cabecera protegida y el payload como JSON. La línea de estado se queda en aviso a propósito: cualquiera que tenga el token puede leerlo, así que las claims decodificadas son solo un anticipo de lo que el token dice ser.

Un token que no declara ningún algoritmo firmado (alg none o ausente) se decodifica aquí igualmente: la inspección nunca exige una firma. Verificar firma es la comprobación que lo rechaza.

Las comprobaciones de Verificar firma

Con un secreto compartido se recalcula la firma sobre el texto exacto del token y se compara; con una clave pública se importa el JWK correspondiente y se usa. En un documento JWKS se busca la clave cuyo kid coincide con la cabecera del token y, si el token no lleva kid, se usa la primera.

Las claims registradas se revisan en la misma pasada: exp y nbf contra el reloj actual, iss contra el emisor esperado y aud contra la audiencia esperada cuando esos campos están rellenos. La línea de estado nombra el primer fallo —firma incorrecta, comprobación de exp o nbf, valor de iss o aud inesperado o ausente— en lugar de un error genérico.

El resumen de claims y la salida en bruto

El resumen lista Algoritmo, ID de clave, Emisor, Audiencia, Sujeto y Caduca; un array de audiencias se imprime como lista separada por comas. El panel de abajo es el token decodificado como JSON con sangrado, con protectedHeader y payload en un mismo documento.

Ambos paneles son texto de solo lectura: el resultado se puede seleccionar y copiar, y una verificación correcta mantiene la misma disposición que una inspección, de modo que nada oculta que la firma es la parte que hace fiables las claims.

Dónde viven las claves

Todo ocurre en la pestaña con la librería jose y la Web Crypto API. La página no hace ninguna petición al inspeccionar ni al verificar, nunca descarga una URL de JWKS —el documento lo pegas tú— y el material de clave se queda en los campos del formulario.

El botón de ejemplo es el único sitio donde existe una clave privada, y no sale de la página: el par se genera en el navegador, el token se firma allí y el campo se rellena solo con el JWK público. Eso también significa que la rotación de claves es manual: un JWKS rotado hay que pegarlo de nuevo.

Herramientas recientes: