DEV Community

Rafaela Nascimento Carvalho
Rafaela Nascimento Carvalho

Posted on

JWT - BEARER TOKEN

O JSON Web Token (JWT) é uma maneira segura de transmitir informações entre partes. Ele é frequentemente usado para autenticação em sistemas web e troca de informações entre serviços. Vamos simplificar:

Imagine que você tem uma "caixa" (token) que contém informações importantes. Essa caixa é assinada digitalmente para garantir que ninguém mexeu com ela. Dentro dessa caixa, você coloca algumas informações, como quem é o usuário e por quanto tempo o token é válido.

Quando você precisa compartilhar essas informações com outro serviço, você entrega a "caixa" (token). O serviço receptor pode verificar a assinatura para garantir que o conteúdo não foi alterado e, assim, confiar nas informações dentro do token.

Portanto, JWT é como uma caixa segura que você pode enviar para outros serviços, e eles podem confiar nas informações nela devido à assinatura digital. Isso é muito útil para autenticação e autorização em aplicações web.

Configurações
Instalar o pacote Microsoft.AspNetCore.Authentication.JwtBearer
Chave secreta = para gerar o token é necessário informar uma chave secreta, que deve ter no minimo 128 bits, por segura é importante remove-la do código, mas em período de teste é possível adiciona-lá no appSettings ou em uma classe apoio, conforme o exemplo abaixo:

Image description

Estrutura do JWT

Handler - Cria uma instancia do JWT - Principal responsável pela geração do token (através dele o token será gerado)
Inicialização:
var handler = new JwtSecurityTokenHandler()

CreateToken - Método responsável pela criação do token, a partir dos parametros informados no tokenDescriptor.
var token = handler.CreateToken(tokenDescriptor);

WriteToken - Conversão do token para string.
var strToken = handler.WriteToken(token);

Image description

-- Configurando as credencias
SigningCredentials - Responsável pelas credenciais que serão utilizadas na criação do token - Objeto utilizado para realizar a assinatura do token
var key = Encoding.ASCII.GetBytes(Configuration.PrivateKey);
var credentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature);

TokenDescriptor - Conteúdo que ficará dentro do token e será criptografado.

Image description
~~Aproximado

Image description

É possivel configurar o tempo de expiração do token, para aumentar a segurança, conforme mostra abaixo:

Image description

Projetos criados que utilizam o token JWT:
https://github.com/RafaelaNasciment/carrinho-compras
https://github.com/RafaelaNasciment/JwtBearer

Conteúdos utilizados para desenvolvimento desse artigo:
https://www.youtube.com/watch?v=-eGSRK7z8-w
https://www.youtube.com/watch?v=anjAu3RY7o8

jwt #csharp #development #auth #authorization

Top comments (1)

Collapse
 
daniellimae profile image
Daniel Lima

mt bom