DEV Community

Bruno Bertolini
Bruno Bertolini

Posted on • Updated on

Tudo o que você precisa saber sobre JSON Web Tokens

JWT

O JSON Web Token (JWT) é um padrão aberto, que define uma maneira compacta e independente de transmitir informações com segurança entre as partes, utilizando um objeto JSON.

Os tokens assinados podem verificar a integridade das reivindicações (claims) contidas nele, enquanto os tokens criptografados ocultam essas reivindicações de outras partes. Quando os tokens são assinados usando pares de chaves pública / privada, a assinatura também certifica que apenas a parte que detém a chave privada é a que o assinou.

E onde deveria usá-los?

Dois cenários principais, onde JWTs são úteis:

Autorização: este é o cenário mais comum para o uso do JWT. Após o login do usuário, cada solicitação subsequente incluirá o JWT, permitindo que o usuário acesse rotas, serviços e recursos permitidos com esse token. O SSO (Single sign-on) é um recurso que usa amplamente o JWT atualmente, devido à sua pequena sobrecarga e à capacidade de ser facilmente usado em diferentes domínios.

Troca de informações: os JSON Web Tokens são uma boa maneira de transmitir informações com segurança entre as partes. Como as JWTs podem ser assinadas (por exemplo, usando pares de chaves públicas / privadas), você pode ter certeza de que os remetentes são quem eles dizem que são. Além disso, como a assinatura é calculada usando o cabeçalho e o payload, você também pode verificar se o conteúdo não foi violado.

Certo, e como é a estrutura de um JWT?

JSON Web Tokens são compostos por 3 partes, separadas por um ponto: Cabeçalho (header), dados (payload) e assinatura (signature).

Cabeçalho (header)

Header JWT

O cabeçalho geralmente consiste em duas partes: o tipo do token, que é JWT, e o algoritmo de assinatura que está sendo usado, como HMAC SHA256 ou RSA.

Conteúdo do cabeçalho

Em seguida, esse JSON é codificado em Base64Url para formar a primeira parte do JWT.

Dados (payload)

Payload JWT

O payload é exatamente os dados que você deseja enviar para a outra parte. Geralmente segue um padrão (registered claims), mas não é obrigatório, portanto aceita qualquer JSON

Conteúdo do payload

O payload é então codificado em Base64Url para formar a segunda parte do JWT.

Assinatura (signature)

Assinatura JWT

Para criar a parte da assinatura, é necessário pegar o cabeçalho codificado, a payload codificado, um segredo, o algoritmo especificado no cabeçalho e assinar isso.

Conteúdo da assinatura

A assinatura é usada para verificar se a mensagem não foi alterada ao longo do caminho e, no caso de tokens assinados com uma chave privada, também pode verificar se o remetente da JWT é quem diz ser.

Esse conteúdo também está lá no insta da codar.me, segue lá, que tenho postado conteúdo com frequência! Ah, e se inscreve no canal do youtube pra conteúdos mais aprofundados! :)

Latest comments (0)