JWT

Uma das formas de proteger os dados, é por meio do Token Based Authentication que utiliza um token JWT. Mas, afinal, você sabe o que é isso?

A importância da segurança vem aumentando ao longo dos anos devido ao aumento de ataques cibernéticos e violações de dados. As organizações precisam tomar precauções, como implementar medidas de segurança cibernética e usar tecnologias de criptografia para seus ativos digitais.

A segurança é um ponto essencial de qualquer aplicação web, independentemente do tamanho. Ele contém dados que precisam ser protegidos, pois podem ser acessados por usuários mal-intencionados.

Uma das formas de proteger os dados, é por meio do Token Based Authentication que utiliza um token JWT. Mas, afinal, você sabe o que é isso? É o que explicaremos neste artigo. Confira!

JWT: O Que é e quando utilizá-lo

JSON Web Token é um tipo de token de segurança usado no processo de autorização. Contém informações codificadas que podem ser decodificadas pelo servidor e passadas ao cliente solicitante.

Seu objetivo é transmitir ou armazenar de forma compacta e segura objetos JSON entre diferentes aplicações. O JWT é digitalmente assinado por meio de uma chave secreta com o algoritmo HMAC ou um par de chaves pública e privada RSA ou ECDSA.

Esse fato o torna um meio extremamente seguro de compartilhamento de informações e autenticação de usuários. Seu formato é baseado em texto e amplamente aceito por diversas linguagens de programação.

O JWT é um dos principais componentes do JOSE (Json Object Signing and Encryption). Nele estão contidas especificações como:

  • JWE (Json Web Encryption), responsável pela criptografia para a assinatura do token;
  • JWA (Json Web Algorithms), a respeito do algoritmo;
  • JWK (Json Web Keys) correspondente as chaves para assinatura;
  • JWS (Json Web Signature), a assinatura do token.
  • JWT, elemento JOSE, é o token em si.

Sua utilização acontece em dois cenários: no processo de autorização em aplicações ou na troca de informações. A seguir detalhamos suas formas de uso. Confira!

Autorização

O cenário mais comum para usar JSON Web Tokens é autenticar usuários fornecendo-lhes o token e permitindo que eles acessem as rotas, serviços e recursos apropriados em seu site ou servidor.

Troca De Informações

Os JWTs podem ser assinados usando pares de chaves públicas e privadas. Isso fornece algum nível de garantia de que o remetente é quem diz ser.

Estruturas do JWT

Os JSON Web Tokens consistem em três partes separadas por pontos (.). Essas partes são:

  • Header;
  • Payload;
  • Signature.

Header

O header, ou cabeçalho, fica localizado no início do token e é composto por dois elementos: o alg e o typ. O primeiro indica qual o algoritmo de criptografia usado e o segundo informa o tipo de token.

No entanto, não obrigatoriamente todo token JWT contém a informação do tipo token. A informação essencial nesse caso é a que indica qual o algoritmo de assinatura foi utilizado.

Payload

O Payload, ou corpo, é onde ficam contidas as claims. Claims são declarações sobre o usuário, e dados adicionais.

O corpo do token JWT é constituído por informações opcionais, ou seja, informações que a aplicação que o gerou deseja informar, com exceção da chave sub que é obrigatória, já que é o fator identificador da entidade a qual o token se refere.

Existem 3 tipos de claims em payloads: reserved, public e private claims. Os reserved claims são atributos não obrigatórios, porém recomendados, que podem ser um conjunto de informações uteis e interoperáveis normalmente utilizados em protocolos de segurança em API’s. Essas claims pré-determinadas são padronizadas pelo sistema e podem ser classificadas em:

  • Json Token Identifier (jti): é a identidade única do token;
  • iss: Trata-se do usuário que emitiu o token;
  • iat: Identifica o tempo de existência do token a partir do horário de sua emissão;
  • nbf: Determina a validade do token;
  • exp: Refere-se ao tempo de expiração do token. Ou seja, após o período determinado, o token não é mais aceito para processamento;
  • sub: Indica o assunto do token;
  • aud: Identifica o público do token, ou seja, o consumidor final.

Os public claims são os atributos que definem o uso do JWT e informações úteis para a aplicação. Já o private claims são aqueles definidos especialmente para compartilhar informações entre aplicações.

É importante destacar que não se deve colocar informações sensíveis no payload, já que é possível acessar o conteúdo de cada segmento de um jwt token. O processo para visualização de conteúdo é feito por meio de um Base64 decode.

Signature

Trata-se de um dos elementos mais sensíveis do jwt pois é uma espécie de produto dos outros dois componentes. Sua composição é feita por meio da codificação (encode) do header e do payload, somado a uma palavra-chave.

A assinatura consegue identificar se a mensagem do jwt token não foi violado em algum momento. A palavra-chave segredo concede a geração de outros tokens, sendo exclusiva do servidor.

Construção de um Token

Um token nada mais é do que uma assinatura digital, ou seja, uma chave. Dessa forma, é uma string, uma cadeia de caracteres que funciona para representação de um objeto.

Uma assinatura é uma parte sensível à segurança de um token destinada a proteger a integridade das informações. Para garantir essa proteção, existe uma fórmula padrão qye exige que o token seja uma hash em Base64 gerada de um algoritmo de criptografia, por exemplo SHA256 ou SHA512, e essa hash precisa ser feita por meio do header e do payload do token.

Verificação

Um token seguro é matematicamente impossível de ser decodificado sem a chave secreta do aplicativo. No entanto, uma vez descoberta, qualquer aplicação pode decodificar a assinatura e verificar sua validade.

Isso é realizado ao gerar uma assinatura utilizando o header e o payload fornecidos pelo cliente para então comparar essa assinatura gerada com a presente no token enviado pelo cliente. Uma vez que as assinaturas apresentadas sejam idênticas, o acesso é concedido na aplicação.

Na Prática

Para chegar ao resultado final de um token é necessário portanto:

  • Ditar um algoritmo (alg) e um tipo (typ) no hedader;
  • Informar as claims, que podem ser registradas ou personalizadas, do token;
  • Interligar os três elementos: header, payload e signature.

Gostou do nosso conteúdo? Então siga-nos nas redes sociais para ficar por dentro de mais informações e acompanhe o nosso blog.

Conteúdo

Nossos artigos mais recentes
Leia sobre as últimas tendências na área de tecnologia
Teste de segurança
Integrar testes de segurança no desenvolvimento ágil é essencial para evitar vulnerabilidades....
Como testar e depurar sistemas embarcados
Testar e depurar código em sistemas embarcados exige estratégias eficientes para lidar...
Inteligência artificial 02
A Inteligência Artificial está mudando a análise de dados ao automatizar processos,...

Extra, extra!

Assine nossa newsletter

Fique sempre atualizado com as novidades em tecnologia, transformação digital, mercado de trabalho e oportunidades de carreira

Gostaria de falar com um Representante de Vendas?

Interessado em:

Como a diversidade pode impulsionar a inovação? Mulheres em ação (Inovação, Tecnologia e Inspiração)