Dev & EngARTIGO

Entendendo tokens JWT

O autor explica neste artigo, o que são os tokens JWT, passando pelos conceitos principais do Header, Payload e Signature.

O JWT é um padrão (RFC-7519) de mercado que define como transmitir e armazenar objetos JSON de forma compacta e segura entre diferentes aplicações. Os dados nele contidos podem ser validados a qualquer momento, pois o token é assinado digitalmente.

Ele é formado por três seções: Header, Payload e Signature.

O Header é um objeto JSON que define informações sobre o tipo do token (typ), nesse caso JWT, e o algoritmo de criptografia usado em sua assinatura (alg), normalmente HMAC SHA256 ou RSA.

Payload

O Payload é um objeto JSON com as Claims (informações) da entidade tratada, normalmente o usuário autenticado.

Essas claims podem ser de três tipos:

  • Reserved claims: atributos não obrigatórios (mas recomendados) que são usados na validação do token pelos protocolos de segurança das APIs.
    • sub (subject): entidade à quem o token pertence, normalmente o ID do usuário;
    • iss (issuer): emissor do token;
    • exp (expiration): timestamp de quando o token irá expirar;
    • iat (issued at): timestamp de quando o token foi criado;
    • aud (audience): destinatário do token, representa a aplicação que irá usá-lo.

Geralmente os atributos mais utilizados, são: sub, iss e exp.

  • Public claims: atributos que usamos em nossas aplicações. Normalmente armazenamos as informações do usuário autenticado na aplicação.
  • Private claims: atributos definidos especialmente para compartilhar informações entre aplicações.

Por segurança, recomenda-se não armazenar informações confidenciais ou sensíveis no token.

Signature

A assinatura é a concatenação dos hashes gerados a partir do Header e Payload usando base64UrlEncode, com uma chave secreta ou certificado RSA.

Essa assinatura é utilizada para garantir a integridade do token. No caso, se ele foi modificado e se realmente foi gerado por você.

Isso previne ataques do tipo man-in-the-middle, onde o invasor poderia interceptar a requisição e modificar seu conteúdo, desta forma personificando o usuário com informações falsas. Caso o payload seja alterado, o hash final não será válido, pois não foi assinado com sua chave secreta.

Apenas quem está de posse da chave pode criar, alterar e validar o token.

Resultado final

O resultado final é um token com três seções (header, payload, signature) separadas por “.” – ponto.

Usando o token

Ao fazer login em um serviço de autenticação, um token JWT é criado e retornado para o client. Esse token deve ser enviado para as APIs através do header Authorization de cada requisição HTTP com a flag Bearer, conforme ilustra o diagrama abaixo.

Authorization: Bearer [token]

Em posse do token, a API não precisa ir até o banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → consultar as informações do usuário, pois contido no próprio token JWT já temos suas credenciais de acesso.

Nos próximos artigos mostrarei como criar uma API em ASP.NET↳.NET113 conteúdosNovidades do .NET 9 – o tipo genérico OrderedDictionaryDev (Back & Front) · dez 2024Novidades .NET 10: novas formas de uso do .NET CLIDev (Back & Front) · dez 2025Novidades do .NET 5: implementando um proxy reverso com YARP + ASP.NET 5Dev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → Core com autenticação usando JWT.

Espero que tenham gostado, e se ficou alguma dúvida ou caso tenham críticas e sugestões, por favor entrem em contato.

Abraços!

Referências

Atua como líder técnico, arquiteto e desenvolvedor de software há mais de 10 anos, com foco em tecnologias Microsoft. É formado em Análise e Desenvolvimento de Sistemas. Possui experiência desenvolvendo software para as áreas de Call-Center, Financeiras e Educacional. Também é autor técnico em portais e blogs especializados.

Mais de Wellington Nascimento
Ver perfil →
Leia também