JWT Decoder
Cole um JWT para decodificar e inspecionar header, payload e claims.
O que é um JWT?
Um JSON Web Token (JWT, pronunciado "jot") é um formato de token compacto e seguro para URL definido na RFC 7519. Os JWTs são o padrão da indústria para transmitir informações de autenticação e autorização entre partes. São amplamente usados em sistemas de single sign-on (SSO), fluxos OAuth 2.0 e autenticação de API.
Um JWT consiste em três partes codificadas em Base64URL separadas por pontos: um cabeçalho, um payload e uma assinatura. O cabeçalho especifica o algoritmo de assinatura (ex.: HS256, RS256). O payload contém claims — pares chave-valor com informações como ID de utilizador, permissões e tempo de expiração. A assinatura garante que o token não foi adulterado.
Claims JWT comuns
- sub: sub (Sujeito): Identifica o principal — geralmente um ID de utilizador ou endereço de e-mail.
- iat: iat (Emitido Em): Timestamp Unix que indica quando o token foi criado.
- exp: exp (Expiração): Timestamp Unix após o qual o token já não é válido.
- iss: iss (Emissor): Identifica quem emitiu o token (ex.: o seu servidor de autenticação).
- aud: aud (Audiência): Identifica o destinatário pretendido do token (ex.: a sua API).
Como utilizar esta ferramenta
Cole um JWT no campo de entrada. A ferramenta descodifica imediatamente o cabeçalho e o payload, apresentando os claims num formato legível. Os tempos de expiração são convertidos para datas legíveis por humanos. A ferramenta também verifica a estrutura do token e indica se o formato é inválido.
É seguro colar o meu JWT aqui?
Sim. Esta ferramenta descodifica o JWT inteiramente no seu browser usando JavaScript. Nenhum dado é enviado para nenhum servidor. Contudo, os JWTs devem ser sempre tratados como credenciais sensíveis — nunca partilhe tokens de produção publicamente, os publique em mensagens de chat ou os faça commit em controlo de versões.
Como funciona a autenticação JWT
Quando um utilizador faz login, o servidor cria um JWT com a identidade e permissões do utilizador, assina-o com uma chave secreta e devolve-o ao cliente. O cliente inclui este token no cabeçalho Authorization dos pedidos de API subsequentes. O servidor verifica a assinatura para garantir que o token é autêntico e não foi modificado.
Esta abordagem é sem estado — o servidor não precisa de armazenar dados de sessão numa base de dados. Toda a informação necessária está incorporada no próprio token. Isto torna os JWTs ideais para sistemas distribuídos, arquiteturas de microsserviços e aplicações serverless onde o estado partilhado é difícil de gerir.
Erros comuns com JWTs
Armazenar dados sensíveis (palavras-passe, números de cartão de crédito) no payload JWT é um erro crítico. O payload está apenas codificado em Base64, não encriptado — qualquer pessoa com o token pode descodificá-lo e lê-lo. Armazene apenas identificadores e claims não sensíveis nos JWTs.
Usar tempos de expiração excessivamente longos é outro erro comum. Um token válido por 30 dias dá a um atacante 30 dias para usar um token roubado. Mantenha os tempos de vida dos tokens de acesso curtos (5–15 minutos) e use tokens de atualização para sessões de longa duração.
Perguntas frequentes
Qual é a diferença entre HS256 e RS256?
O HS256 usa um segredo simétrico partilhado — a mesma chave assina e verifica o token. O RS256 usa um par de chaves assimétricas — uma chave privada assina e uma chave pública verifica. O RS256 é preferido para sistemas distribuídos porque a chave de verificação pode ser partilhada publicamente sem comprometer a segurança.
Um JWT pode ser revogado?
Os JWTs são sem estado, pelo que não podem ser revogados diretamente. As soluções alternativas comuns incluem manter uma lista negra de IDs de tokens revogados no servidor, usar tempos de expiração curtos ou rodar as chaves de assinatura. Para necessidades de revogação imediata, considere usar tokens opacos com armazenamento de sessão no servidor.