# Decodificador e verificador de JWT

Decodifique um JSON Web Token, confira a expiração e os claims e verifique a assinatura com um segredo ou chave pública.

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

## O que faz

Decodifique um JSON Web Token para ler o cabeçalho e o payload, veja se ele expirou e verifique a assinatura com um segredo ou uma chave pública. O token é decodificado no seu navegador, esta página não mostra anúncios e o token e a chave nunca são compartilhados nem salvos.

## Como usar

1. Cole o token. Um prefixo `Bearer ` e quebras de linha são ignorados.
2. Leia o payload como JSON formatado ou compacto. Abaixo dele você vê o algoritmo, o status e os horários `exp`, `nbf` e `iat` junto de quanto faltam ou passaram em relação a agora.
3. Para verificar a assinatura, informe a chave: um segredo para HS256, HS384 e HS512, ou uma chave pública (PEM ou JWK) para RS, PS, ES e EdDSA.
4. Alterne o cabeçalho e o payload entre JSON e Claims: Claims lista cada claim com o seu significado e mostra os claims de tempo como datas.
5. Abra a aba Codificar para escrever um cabeçalho e um payload e assiná-los com um segredo ou uma chave privada (PEM PKCS#8 ou JWK). Nada dessa aba é salvo, compartilhado ou adicionado ao histórico.

## Exemplos

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
```

O payload desse token:

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

A assinatura dele é verificada com o segredo `your-256-bit-secret`.

## Bom saber

- Decodificar não é verificar: o payload é apenas codificado, não criptografado, e qualquer pessoa pode lê-lo.
- Seu servidor deve verificar a assinatura antes de confiar em qualquer claim.
- Um token com o algoritmo `none` não é assinado, então qualquer pessoa poderia tê-lo criado.
- Trate tokens em uso como senhas. Prefira tokens expirados ou de teste ao colar um aqui.
- Um JWKS colado é pesquisado pelo `kid` do token, e um JWK único é usado como está. A página nunca busca um conjunto de chaves no emissor do token.
- Um segredo HMAC mais curto que o seu hash (32, 48 ou 64 bytes) pode ser adivinhado, por isso a página avisa. Um segredo pode ser lido como texto UTF-8 ou como Base64URL.

## O que é um JWT?

Um JSON Web Token são três partes Base64URL unidas por pontos: um cabeçalho com o algoritmo de assinatura, um payload com claims (para quem é o token, quando expira) e uma assinatura. Qualquer pessoa pode ler as duas primeiras partes; só a assinatura prova que o token veio de quem tem a chave.

## Perguntas frequentes

### Decodificar um token é o mesmo que verificá-lo?

Não. Decodificar apenas lê o conteúdo, que não é criptografado. Verificar confere a assinatura com a chave, e o seu servidor deve fazer isso antes de confiar em qualquer claim.

### O que significam exp, nbf e iat?

exp é quando o token expira, nbf o momento antes do qual não é válido e iat quando foi emitido, tudo em segundos desde 1970. Esta ferramenta os compara com o relógio do seu dispositivo.

### É seguro colar um token real aqui?

O token é decodificado no seu navegador e nunca enviado aos nossos servidores, e esta página não mostra anúncios. Ainda assim, trate tokens ativos como senhas: prefira tokens expirados ou de teste.