Como decodificar um JWT
- Cole o seu token na caixa JSON Web Token ou toque em Ver um exemplo para carregar um token de exemplo inofensivo.
- Repare nas cores. O token aparece dividido em cabeçalho, payload e assinatura, cada parte com uma cor, para você ver onde cada uma começa.
- Leia o cabeçalho e o payload como JSON formatado. Use o botão de copiar ao lado de cada bloco para levar o JSON com você.
- Confira as claims de tempo. Expira em (exp), Emitido em (iat) e Válido a partir de (nbf) viram datas legíveis, com um selo de status: Não expirado, Expirado, Ainda não é válido ou Sem data de expiração.
Recursos
- Decodificação instantânea enquanto você cola, sem apertar botão.
- Cabeçalho e payload em JSON formatado, cada um com seu botão de copiar.
- Datas legíveis para as claims exp, iat e nbf, com status de validade claro.
- Aceita o prefixo Bearer, então dá para colar o valor do cabeçalho Authorization do jeito que está.
- Alerta para alg none, um token sem assinatura que nunca deve ser aceito.
- Mensagens de erro claras para token com número errado de partes, Base64URL inválido, JSON inválido ou JWE criptografado de cinco partes.
- Compatível com Unicode, então nomes com acentos, ç e claims em qualquer idioma aparecem corretamente.
Por que usar o decodificador de JWT do Fileora
Access tokens, ID tokens e refresh tokens são credenciais. Colar esses tokens em um site que os manda para um servidor é um risco real, porque qualquer pessoa com um token válido pode agir como aquele usuário até ele expirar. O Fileora decodifica o token com JavaScript no seu navegador, então ele nunca sai do seu dispositivo e nada sobre ele fica registrado.
A ferramenta é grátis, não pede cadastro e não tem limites. Funciona no celular tanto quanto no notebook, o que ajuda quando você está investigando um token de um app mobile ou de um chamado de suporte.
Como um JWT é montado
Um JWT assinado são três pedaços de texto unidos por pontos: header.payload.signature. O cabeçalho e o payload são objetos JSON codificados em Base64URL, uma versão do Base64 que pode ir em URLs sem problema. Essa codificação não é criptografia. Qualquer pessoa com o token consegue ler todas as claims, e é exatamente isso que esta ferramenta faz.
O cabeçalho informa o algoritmo de assinatura em alg, por exemplo HS256 (um segredo compartilhado) ou RS256 (um par de chaves privada e pública). O payload carrega as claims: sub para o usuário, iss para o emissor, aud para o público a quem o token se destina e as claims de tempo exp, iat e nbf, contadas em segundos desde 1970.
A assinatura é o que torna o token confiável. O seu servidor recalcula a assinatura a partir do cabeçalho e do payload usando a chave dele, e rejeita o token se o resultado não bater, se o alg não for um dos esperados ou se o exp já tiver passado. Como qualquer pessoa pode criar um token com o payload que quiser, sempre verifique a assinatura no seu servidor com o segredo ou a chave pública antes de confiar em qualquer claim. Um decodificador como este serve para ler e depurar, não para decidir quem está logado.
Duas dicas: nunca coloque senhas ou outros segredos no payload, já que qualquer um consegue ler, e mantenha os tempos de expiração curtos. Quando precisar de um segredo de assinatura longo e aleatório, o gerador de senhas cria um para você, e o formatador de JSON ajuda a organizar um payload que você está montando à mão. Para decodificar só um trecho em Base64URL, use a ferramenta de codificar e decodificar Base64.