
JSON Web Token
(7 minutos de leitura) 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.
Compartilhe este artigo em suas redes sociais:
Avalie este artigo:
Outros artigos que você pode ter interesse em ler
- Todos (148)
- Bem estar (13)
- Carreira (37)
- Competições (4)
- Desenvolvimento (85)
- Design (8)
- Diversidade e Inclusão (3)
- Eventos (3)
- História (13)
- Indústrias (6)
- Inovação (32)
- Liderança (7)
- Projetos (23)

Como se manter atualizado

C#

BFF

SOAP

Plugins ChatGPT
