ASP.NET Core - Implementando Json Web Tokens(JWT) - II
Neste artigo veremos como implementar a autenticação JWT em aplicações ASP .NET Core. |
Continuando a primeira parte do artigo vamos usar o token JWT gerado para implementar a segurança em outros recursos da nossa aplicação.
Criando uma WEB API Segura
Agora vamos criar um outra Web API que vai retornar informações de clientes. Para poder acessar as informações desta API o usuário terá que ter sido autenticado e possuir um token JWT.
Precisamos primeiro criar uma classe Cliente na pasta Models que será o nosso modelo de domínio com o código abaixo:
public class Cliente { public int ClienteId { get; set; } public string Nome { get; set; } public string Email { get; set; } } |
Ao solicitar acesso a API dos clientes o usuário terá que enviar o token JWT que será validado para fornecer ou não o acesso á API.
Vamos criar um controlador chamado ClientesController na pasta Controllers usando o template API Controller - Empty.
A seguir inclua o código abaixo neste controlador:
using AspCore_JWT.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace AspCore_JWT.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ClientesController : ControllerBase
{
[Authorize]
[HttpGet]
public IActionResult GetClientes()
{
List<Cliente> clientes = new List<Cliente>();
clientes.Add(new Cliente()
{
ClienteId = 1,
Nome = "Macoratti",
Email = "macoratti@yahoo.com"
});
clientes.Add(new Cliente()
{
ClienteId = 2,
Nome = "Andre Lima",
Email = "andrelima@uol.com.br"
});
clientes.Add(new Cliente()
{
ClienteId = 3,
Nome = "Janete Siqueira",
Email = "jansiqueira@hotmail.com"
});
return new ObjectResult(clientes);
}
}
}
|
Neste código definimos o método Action GetClientes() que cria informações para 3 clientes e retorna um ObjectResult com a lista de objetos Cliente.
Note que usamos o atributo Authorize no método Action GetClientes. Dessa forma somente usuários autenticados poderão acessar esse método.
Testando o acesso com o Postman
Para poder fazer o teste, vamos agora enviar uma requisição GET usando o Postman e enviar junto com a requisição no Header o token JWT.
Execute o projeto no VS 2017, a seguir inice o Postman.
1- Primeiro vamos tentar a acessar a API e retornar os dados dos clientes sem enviar o Token. Para isso informe os seguintes dados e clique no botão Send:
O resultado obtido será: 401 Unauthorized
2- Agora vamos acessar a API enviando o token. Para isso informe os seguintes dados e clique no botão Send:
Agora o resultado obtido será : a lista de objetos Cliente
Agora enviamos junto com o cabeçalho (Header) o Content-Type o Authorization (Token JWT).
Nota: Para adicionar o header de autorização, acesse a guia Headers e insira KEY como Authorization e VALUE como Bearer <string_token>. Observe que informamos bearer seguido por um espaço em branco, seguido pelo token real.
Nosso objetivo neste artigo foi implementar a autenticação usando token JWT, e, para simplificar o artigo não criamos uma interface com o usuário, mas apenas constamos se nossa implementação esta funcionando.
Brevemente vou implementar um projeto completo usando os recursos da autenticação JWT.
Pegue o projeto implementado aqui: AspCore_JWT2.zip (sem as referências)
"Não sejais
vagarosos no cuidado; sede fervorosos no espírito, servindo ao Senhor;
Alegrai-vos na esperança, sede pacientes na tribulação, perseverai na oração;"
Romanos 12:11,12
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico
ASP .NET Core - Macoratti
Conceitos - .NET Framework versus .NET Core
ASP .NET Core - Conceitos Básicos
ASP .NET Core MVC - CRUD básico com ADO .NET
ASP .NET Core - Implementando a segurança com .
ASP .NET Core - Apresentando Razor Pages
Minicurso ASP .NET Core 2.0 - Autenticação com JWT - I
Minicurso ASP .NET Core 2.0 - Autenticação com JWT - II