# Decodificador y verificador de JWT

Decodifica un JSON Web Token, comprueba su caducidad y sus claims, y verifica su firma con un secreto o una clave pública.

https://codeknife.dev/es/decodificador-jwt/

## Qué hace

Decodifica un JSON Web Token para leer su cabecera y su carga útil, comprueba si ha caducado y verifica su firma con un secreto o una clave pública. El token se decodifica en tu navegador, esta página no muestra anuncios y el token y la clave nunca se comparten ni se guardan.

## Cómo usarla

1. Pega el token. Se ignoran el prefijo `Bearer ` y los saltos de línea.
2. Lee la carga útil como JSON con formato o compacto. Debajo ves el algoritmo, el estado y las fechas `exp`, `nbf` e `iat` junto con lo lejos que están de ahora.
3. Para verificar la firma, introduce la clave: un secreto para HS256, HS384 y HS512, o una clave pública (PEM o JWK) para RS, PS, ES y EdDSA.
4. Cambia la cabecera y el payload entre JSON y Claims: Claims lista cada claim con su significado y muestra los claims de tiempo como fechas.
5. Abre la pestaña Codificar para escribir una cabecera y un payload y firmarlos con un secreto o una clave privada (PEM PKCS#8 o JWK). Nada de esa pestaña se guarda, se comparte ni se añade al historial.

## Ejemplos

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
```

La carga útil de ese token:

```json
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
```

Su firma se verifica con el secreto `your-256-bit-secret`.

## Conviene saber

- Decodificar no es verificar: la carga útil solo está codificada, no cifrada, y cualquiera puede leerla.
- Tu servidor debe verificar la firma antes de fiarse de cualquier claim.
- Un token con el algoritmo `none` no está firmado, así que cualquiera podría haberlo creado.
- Trata los tokens reales como contraseñas. Si puedes, pega aquí tokens caducados o de prueba.
- Un JWKS pegado se busca por el `kid` del token, y un JWK suelto se usa tal cual. La página nunca descarga un conjunto de claves del emisor del token.
- Un secreto HMAC más corto que su hash (32, 48 o 64 bytes) se puede adivinar, por eso la página te avisa. Un secreto se puede leer como texto UTF-8 o como Base64URL.

## ¿Qué es un JWT?

Un JSON Web Token son tres partes Base64URL unidas por puntos: una cabecera con el algoritmo de firma, una carga útil con claims (para quién es el token, cuándo caduca) y una firma. Cualquiera puede leer las dos primeras partes; solo la firma prueba que el token viene de alguien que tiene la clave.

## Preguntas frecuentes

### ¿Decodificar un token es lo mismo que verificarlo?

No. Decodificar solo lee el contenido, que no está cifrado. Verificar comprueba la firma con la clave, y tu servidor debe hacerlo antes de fiarse de cualquier claim.

### ¿Qué significan exp, nbf e iat?

exp es cuándo caduca el token, nbf el momento antes del cual no es válido e iat cuándo se emitió, todo en segundos desde 1970. Esta herramienta los compara con el reloj de tu dispositivo.

### ¿Es seguro pegar aquí un token real?

El token se decodifica en tu navegador y nunca se envía a nuestros servidores, y esta página no muestra anuncios. Aun así, trata los tokens vivos como contraseñas: mejor usa tokens caducados o de prueba.