Meu JWT é enviado a um servidor?+−
Não. A decodificação acontece inteiramente no seu navegador usando as Web APIs atob e TextDecoder - o token, e qualquer segredo ou chave pública que você cole para verificar uma assinatura, nunca saem do seu dispositivo.
Esta ferramenta consegue verificar a assinatura?+−
Sim, como um bônus de melhor esforço. Se você souber o segredo HMAC (para HS256/384/512) ou colar a chave pública codificada em PEM (para RS256/384/512 ou ES256/384/512), a ferramenta verifica a assinatura localmente usando a Web Crypto API do navegador. Sem uma chave, apenas o cabeçalho e o payload são decodificados e exibidos - a decodificação nunca exige a chave de assinatura.
Por que o algoritmo aparece como "none"?+−
"alg": "none" significa que o token não está assinado de forma alguma - qualquer um poderia ter escrito quaisquer claims nele. Algumas bibliotecas historicamente aceitaram esses tokens sem assinatura como válidos, o que se tornou uma forma conhecida de burlar a autenticação. Esta ferramenta sempre sinaliza isso com destaque para que você não deixe passar.
O que significam exp, iat e nbf?+−
São as claims padrão de timestamp da RFC 7519: iat indica quando o token foi emitido, nbf o primeiro momento em que se torna válido, e exp quando deixa de ser. As três são armazenadas como um NumericDate - segundos desde o epoch Unix -, que esta ferramenta converte em uma data legível e um tempo relativo como "expira em 2 horas".
Por que consigo ler o payload sem um segredo?+−
Porque o cabeçalho e o payload de um JWT são apenas codificados em base64url, não criptografados - codificação não é sigilo. Qualquer um com o token já pode ler suas claims; a assinatura apenas prova que não foram alteradas por alguém sem a chave. Nunca coloque algo que você não queira que um atacante leia diretamente dentro do payload de um JWT.
Meu token tem 3 partes mas ainda assim não decodifica - por quê?+−
Cada um dos três segmentos (cabeçalho, payload, assinatura) precisa ser texto base64url válido, e o cabeçalho e o payload precisam decodificar para JSON válido. Esta ferramenta decodifica o cabeçalho e o payload de forma independente e diz exatamente qual deles está quebrado e por quê (base64 ruim, UTF-8 ruim ou JSON inválido), em vez de simplesmente falhar silenciosamente.