Cómo se usa
- 1Pega el token en el cuadro, con o sin el prefijo «Bearer». La cabecera y el payload se decodifican mientras escribes.
- 2Mira la línea de estado: indica si el token es válido, ha expirado o todavía no es válido, según sus claims
expynbf. - 3Lee los claims estándar (emisor, sujeto, audiencia y fechas), con las marcas de tiempo convertidas en fechas de tu zona horaria.
- 4Para comprobar la firma, escribe el secreto compartido en los tokens
HS256, o pega la clave pública o el conjunto de JWK enRS256,ES256y otros algoritmos de par de claves.
Qué contiene un JWT
Un JSON Web Token son tres partes codificadas en Base64URL y unidas por puntos: header.payload.signature. La cabecera indica cómo está firmado el token, por ejemplo, {"alg":"HS256","typ":"JWT"}. El payload contiene los claims, es decir, declaraciones sobre el usuario y el token, como un ID de usuario, sus roles o una fecha de expiración. La firma demuestra que las dos primeras partes proceden de quien tiene la clave y que no se han modificado.
Base64URL es una codificación, no un cifrado: cualquiera que tenga el token puede leer su payload, exactamente como hace esta herramienta. No pongas nunca contraseñas ni otros secretos en un JWT. Si el contenido debe ser confidencial, el emisor tiene que usar un token cifrado (JWE), que tiene cinco partes y solo se puede leer con la clave adecuada.
Claims estándar y expiración
El RFC 7519 define siete claims registrados. iss (issuer, emisor) indica quién creó el token; sub (subject, sujeto), a quién se refiere (normalmente, un ID de usuario), y aud (audience, audiencia), a qué servicio va destinado. exp (expiration time, fecha de expiración), nbf (not before, no antes de) e iat (issued at, fecha de emisión) son marcas de tiempo en segundos desde el 1 de enero de 1970, y jti es un ID único que permite a un servidor detectar si se reutiliza un token.
Un servidor debe rechazar un token después de su fecha exp y antes de su fecha nbf. Una vida útil corta (a menudo de 5 a 60 minutos en los tokens de acceso) limita los daños si roban un token; por eso las aplicaciones usan tokens de actualización (refresh tokens) para obtener otros nuevos.
Cómo comprobar la firma
Al decodificar un token ves lo que afirma; solo la firma te dice si puedes creerlo. HS256, HS384 y HS512 usan un secreto compartido que conocen tanto el emisor como el servidor. RS256, PS256, ES256, EdDSA y otros algoritmos similares usan un par de claves: el emisor firma con su clave privada y cualquiera puede verificar la firma con la clave pública. Los proveedores de identidad publican sus claves públicas como un conjunto de JWK, a menudo en una URL que termina en /.well-known/jwks.json.
La verificación se hace localmente con la API Web Crypto de tu navegador, y nada de lo que pegas se envía a ninguna parte. Aun así, trata con cuidado los secretos de producción y recuerda que nunca hace falta una clave privada para verificar un token, así que pega solo claves públicas.
Preguntas frecuentes
¿Es seguro pegar aquí un JWT?
Sí. El token se decodifica y se verifica en tu navegador, y nunca se envía a nestoo ni a nadie más. Ten en cuenta que un token de acceso válido funciona como una contraseña temporal: cualquiera que lo copie puede usarlo hasta que expire, así que no compartas tokens vigentes en chats ni en tickets de soporte.
¿Se puede decodificar un JWT sin el secreto?
Sí. La cabecera y el payload solo están codificados en Base64URL, así que cualquiera puede leerlos sin ninguna clave. Para crear una firma válida hace falta el secreto o la clave privada, y para verificarla, el secreto o la clave pública.
¿Por qué mi token muestra «Firma no válida»?
Normalmente, porque el secreto o la clave no son los correctos: una clave de otro entorno, un secreto que primero hay que decodificar de Base64 o una clave pública con otro kid. También ocurre cuando el token se modifica o se corta al copiarlo. Para los tokens de un proveedor de identidad, usa el conjunto de JWK actual del proveedor.
¿Qué diferencia hay entre JWS y JWE?
Un JWS es un token firmado con tres partes: cualquiera puede leerlo, pero nadie puede modificarlo sin invalidar la firma. Un JWE es un token cifrado con cinco partes, y solo quien tiene la clave de descifrado puede leer su contenido. La mayoría de los tokens que la gente llama JWT son JWS.
¿Qué significan exp, iat y nbf?
Son fechas expresadas en segundos desde el 1 de enero de 1970, lo que se conoce como tiempo Unix. exp es cuándo expira el token; iat, cuándo se emitió, y nbf, el momento antes del cual no se debe aceptar. Esta herramienta las muestra como fechas de tu zona horaria e indica cuánto tiempo ha pasado o cuánto falta.