Pular para o conteúdo
SDETRole
SDETRole

Glossário · Testes de API

JWT (JSON Web Token)

Em inglês: JWT

Também chamado de: JWTs, JSON Web Token, JSON Web Tokens, token JWT

Definição

Um JSON Web Token é um token compacto e assinado no formato header.payload.signature que carrega claims como id do usuário, expiração e audiência.

Um JSON Web Token (JWT, muitas vezes pronunciado “jót” em inglês) é uma string com três partes codificadas em Base64url separadas por pontos: um header que diz como ele foi assinado, um payload com claims e uma assinatura. As APIs normalmente o recebem no header Authorization: Bearer <token> e verificam a assinatura para confiar nas claims sem consultar o banco de dados. Muitos provedores de OAuth 2.0 e OpenID Connect emitem access tokens e ID tokens no formato JWT.

Exemplo

Um payload decodificado:

{
  "iss": "https://auth.example.com",
  "sub": "user_7f3a",
  "aud": "orders-api",
  "role": "member",
  "iat": 1767225600,
  "exp": 1767229200
}

iss é o emissor, sub o sujeito (normalmente o usuário), aud o destinatário pretendido e iat/exp os horários de emissão e de expiração em segundos desde a época Unix. Ler o payload no Node 22 não exige nenhuma biblioteca:

const [, payload] = token.split('.');
const claims = JSON.parse(Buffer.from(payload, 'base64url').toString('utf8'));

Codificado, não criptografado

Um JWT assinado padrão (um JWS) é codificado, não criptografado. Qualquer pessoa que tenha o token consegue ler todas as claims, como o trecho acima mostra. A assinatura só prova que o token foi emitido por alguém com a chave e que não foi alterado. Por isso, nunca coloque segredos ou dados pessoais no payload de um JWT, a menos que o token seja de fato criptografado (um JWE, um formato separado e menos comum). Decodificar um token não é o mesmo que validá-lo: um teste que só decodifica um token não verificou nada sobre a autenticidade dele.

O que testar

  • Token expirado: defina ou espere o exp passar e espere um 401.
  • Payload adulterado: troque role para admin, mantenha a assinatura antiga e espere 401. Se for aceito, o servidor não está verificando assinaturas.
  • alg: none: um token sem assinatura precisa ser rejeitado.
  • Audiência ou emissor errados: um token válido para outra API não deve funcionar aqui.
  • Token válido, permissões erradas: espere 403, não 401, porque o usuário está autenticado mas não autorizado.
  • Logout e revogação: JWTs normalmente continuam válidos até expirar, então verifique o que o sistema faz depois de um logout ou de uma troca de senha. Expiração curta mais refresh tokens é a mitigação mais comum.

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →