Descodificador de JWT
Descodifica o cabeçalho e o payload de um JWT, lê exp, iat e nbf como datas e verifica assinaturas HS256, RS256, ES256 ou EdDSA no teu navegador.
Os tokens são credenciais. Esta ferramenta descodifica-os e verifica-os no teu navegador e nunca os envia para lado nenhum.
Cabeçalho
Payload
| Claim | Valor | Data | Estado |
|---|
- Algoritmo (alg)
- —
- Assinatura (Base64url)
- —
Verificar a assinatura
HS256/384/512: introduz o segredo partilhado. RS, PS, ES (256/384/512) e EdDSA: cola a chave pública em PEM (chave pública, chave pública RSA ou certificado) ou JWK (num JWK Set, a chave é escolhida pelo kid).
Como descodificar um JWT
- Cola o token em JSON Web Token. Também podes colar um valor
Authorization: Bearer …completo: o prefixoBearere as quebras de linha são removidos. - O token é descodificado à medida que escreves (ou quando clicas em Descodificar). O Cabeçalho e o Payload aparecem como JSON formatado, cada um com o seu botão Copiar.
- Consulta a tabela Claims de tempo:
exp,nbfeiatsão mostrados com o valor bruto, a data no teu fuso horário, um tempo relativo («daqui a 3 horas», «há 2 dias») e um estado como Expirado ou Ainda não válido. - Lê os avisos acima dos resultados, por exemplo quando
algénoneou quando uma data parece estar em milissegundos. - Para verificar a assinatura, preenche a chave em Verificar a assinatura e clica em Verificar assinatura.
Descodificar não é verificar
Um JWT são três partes em Base64url separadas por pontos: header.payload.signature. O cabeçalho e o payload estão apenas codificados, não encriptados: qualquer pessoa que tenha o token consegue lê-los, e esta ferramenta descodifica qualquer token sem precisar de chave. Isso também significa que um payload descodificado não prova nada, porque alguém pode tê-lo alterado. Só uma assinatura válida mostra que o token foi emitido por quem tem a chave e que não foi modificado desde então. Por isso, a linha de estado diz «Descodificado (assinatura não verificada).» enquanto não fizeres a verificação.
Um token com cinco partes é um JWE (JWT encriptado). O conteúdo não pode ser lido sem a chave de desencriptação, e a ferramenta avisa-te disso.
Verificar a assinatura
- HS256, HS384, HS512 (HMAC): introduz o Segredo partilhado. Em Formato do segredo, indica se é texto simples (UTF-8) ou Base64/Base64url, porque alguns fornecedores guardam os segredos em Base64. Também podes colar um JWK do tipo
oct. Se o segredo for mais curto do que o resultado do hash (32 bytes para HS256), a ferramenta avisa que está abaixo do mínimo do RFC 7518. - RS256/384/512, PS256/384/512, ES256/384/512 e EdDSA: cola a Chave pública (PEM ou JWK). São aceites os blocos PEM
PUBLIC KEY,RSA PUBLIC KEYeCERTIFICATE(a chave é lida do certificado X.509). Um JWK ou um JWK Set inteiro também funciona: é usada a chave cujokidcoincide com o do cabeçalho. As chaves privadas são recusadas, porque um verificador nunca precisa delas. O EdDSA suporta Ed25519 nos navegadores cuja Web Crypto o implementa.
A verificação usa a API Web Crypto do navegador. «Assinatura inválida» significa que a chave está errada ou que o token foi alterado. Repara que o algoritmo é lido do cabeçalho do token: um servidor real deve fixar o algoritmo esperado na configuração, caso contrário um atacante pode escolhê-lo.
Notas de segurança
- Os tokens são credenciais. Quem tiver um token de acesso válido pode normalmente agir como o seu dono até ele expirar. Esta ferramenta descodifica e verifica tudo no teu navegador e nunca envia o token nem a chave para lado nenhum. Mesmo assim, evita colar tokens de produção em ferramentas que não consegues inspecionar.
alg: nonesignifica que o token não está assinado. Qualquer pessoa o pode forjar, e um servidor tem de o rejeitar. A ferramenta mostra um aviso e recusa-se a «verificar» um token assim.- As verificações de tempo usam o relógio do teu computador, sem margem de tolerância; os servidores costumam aceitar um ou dois minutos de diferença de relógio.
- As datas JWT (NumericDate) são segundos desde 1 de janeiro de 1970 UTC. Um valor com 13 algarismos está provavelmente em milissegundos, um erro frequente.
Perguntas frequentes
Esta ferramenta diz-me se um token é válido?
Diz-te se a assinatura corresponde à chave que forneces e se exp e nbf estão cumpridos neste momento. Se o token é aceite ou não depende ainda de verificações que só o servidor conhece: emissor esperado (iss), audiência (aud), algoritmo e revogação.
Porque é que a verificação falha com o segredo certo?
Verifica o Formato do segredo: um segredo em Base64 introduzido como texto dá uma chave diferente. Confirma também que não foi acrescentado nenhum espaço nem quebra de linha ao segredo, porque as chaves HMAC são comparadas byte a byte.
Qual é a diferença entre RS256, PS256 e ES256?
As três são assinaturas de chave pública com SHA-256. O RS256 usa RSA com preenchimento PKCS#1 v1.5, o PS256 usa RSA com preenchimento PSS e o ES256 usa ECDSA na curva P-256, que produz assinaturas muito mais curtas.
Onde encontro a chave pública de um fornecedor?
Os fornecedores de identidade publicam um JWKS (JSON Web Key Set), normalmente indicado em /.well-known/openid-configuration no campo jwks_uri. Abre-o tu mesmo e cola aqui o JSON; a ferramenta escolhe a chave pelo kid e nunca descarrega nada.
É seguro colar aqui o meu token?
O token fica no teu dispositivo: a descodificação e a verificação acontecem localmente e nada é enviado. Para mais cautela, usa um token expirado ou de teste quando só precisas de ver a estrutura.
Ferramentas relacionadas
- Gerador de HMAC Calcula um HMAC-SHA1, SHA-256, SHA-384 ou SHA-512 com chave em texto, hex ou Base64, obtém hex e Base64 e verifica a assinatura de um webhook.
- Codificador e descodificador Base64 Codifica e descodifica Base64 online, com suporte completo de UTF-8 e a opção base64url segura para URL. Tudo no teu navegador, nada é enviado.
- Conversor de timestamp Unix Converte timestamps Unix em segundos ou milissegundos em datas legíveis na hora local, em UTC e em ISO 8601, e transforma qualquer data em tempo epoch.
- Formatador e validador de JSON Formatador e validador de JSON gratuito que formata, minifica e verifica JSON no teu navegador, com os erros de sintaxe indicados por linha e coluna.