Entendendo o Token JWT

Alkxyly Samyr
3 min readAug 24, 2021

O JWT (Json Web Token) é um tipo de token transparente, ou seja, podemos ver as informações contidas nele. É um padrão para transporte de dados no formato json de maneira compacta ,segura e pode ser encontrado na especificação RFC 7519.

Esse tipo de token é comumente utilizado em cenários onde é necessário implementar autenticação, por exemplo, uma vez que o usuário está autenticado ele pode realizar várias requisições para obter os recursos, acessos a rotas e serviços que só são permitidos quando se tem a autorização devida.

O Token Jwt é uma String codificada em base64 e assinado por um hash criptográfico. Ele é dividido em três partes: header, payload e signature.

Ao abrir a ferramenta online para debugging do token jwt podemos ver um exemplo.

Disponível em https://jwt.io/

Como podemos observar na imagem acima, o que separa cada seção do token é o ponto e suas respectivas cores representam cada seção.

Então para que serve cada seção?

O Header é a primeira parte da token, é um objeto json que descreve qual operação de criptografia foi utilizada. A primeira propriedade do json “alg” está descrevendo qual foi o algoritmo utilizado e a segunda propriedade “typ” é a abreviatura de type e descreve o tipo de token.

O payload é a segunda parte do Token, geralmente será a maior parte e irá conter as informações do token. Cada chave e valor no json do payload representa uma claim.

Existem nomes de claim pré definidas que tem significado semântico de acordo com a especificação, por exemplo “exp”, que define o tempo de expiração do token. Essa propriedade está descrita na seção 4.1.4. “exp” (Expiration Time) Claim da RFC que foi citada no início do texto e lá você pode encontrar outras definições.

A terceira parte é um hash gerado usando o algoritmo criptográfico que está descrito no header. Para validar o token precisamos especificar qual foi o segredo utilizado para a geração do token e com isso podemos garantir a integridade do token.

A imagem acima mostra como a assinatura é gerada. Primeiro é codificado o header em base64 concatenado com “.” e em seguida codifica também o payload em base64 e o resultado disso é passado para a função HMACSHA256 junto com o segredo utilizado.

Por consequência quem detém o segredo poderá gerar tokens, pois nesse exemplo está sendo utilizado um algoritmo de criptografia simétrica.

O JWT é um token onde as informações ficam contidas nele, podemos também adicionar claims customizadas e é ideal para trabalhar no cenário onde a autenticação é stateless (sem estado). Por mais que outras pessoas consigam visualizar o conteúdo do token, elas não podem alterar qualquer informação, apenas quem detém o segredo pode validar e gerar novos tokens.

--

--