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:
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);
-- 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.
É possivel configurar o tempo de expiração do token, para aumentar a segurança, conforme mostra abaixo:
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
Top comments (1)
mt bom