JWT

sigla

desenvolvimento websegurançacriptografia

Significa: JSON Web Token

Um token compacto e assinado que carrega afirmações sobre um usuário, usado para provar identidade entre serviços.

Um JSON Web Token empacota dados (quem você é, o que pode fazer, quando expira) em uma string assinada que o receptor verifica sem consultar um banco. Conveniente e sem estado, mas fácil de usar mal: deve ser validado com cuidado e não tratado como armazenamento de segredos.

Um JWT são três segmentos em base64url separados por pontos: um cabeçalho que nomeia o algoritmo, uma carga de reivindicações e uma assinatura. A propriedade crítica, e a mais mal compreendida, é que a carga é codificada, não criptografada. Quem tiver o token lê todas as reivindicações nele, então colocar algo confidencial num JWT é publicá-lo.

A assinatura é o que torna o token confiável, e a validação é onde as implementações falham. A vulnerabilidade clássica é aceitar o algoritmo que o próprio token declara: um token que chega com o algoritmo definido como none, ou trocado de RSA para HMAC de modo que a chave pública vire o segredo de verificação, passa numa checagem ingênua. A regra que sobrevive ao contato com atacantes é que o servidor decide qual algoritmo é aceitável, nunca o token.

A troca operacional é a revogação. Um token assinado vale até expirar porque a verificação é local e dispensa consulta, que é justamente o que faz os JWTs escalarem e justamente o que torna difícil um logout imediato. Prazos curtos com tokens de renovação são o meio-termo usual, e qualquer projeto que precise de revogação instantânea está lutando contra o formato em vez de usá-lo.

Também conhecido como: jwt, json web token, jot, bearer token

Todos os verbetes do glossário