ASP.NET Core + JWT: configurando o uso do Swagger para testes com tokens
Venho produzindo conteúdos sobre o uso de JWT (JSON Web Tokens) em aplicações ASP.NET Core e .NET neste blog há algum tempo. Em artigos publicados nos últimos meses trouxe aqui inclusive exemplos baseados no .NET 5:
.NET 5 + APIs REST + JWT: exemplo de implementação
.NET 5 + ASP.NET Core + JWT + Refresh Tokens: exemplo de implementação
.NET 5 + JWT + Polly + Refit: consumindo APIs seguras com simplicidade e resiliência
Neste novo post trago um repositório que disponibilizei no GitHub (uma variação do exemplo abordado nos artigos anteriores), em que demonstro como configurar e utilizar o Swagger/Open API para testes com JWT em uma API REST criada com ASP.NET Core + .NET 5:
https://github.com/renatogroffe/ASPNETCore5-REST_API-JWT-Swagger_ContagemAcessos
Neste exemplo foram utilizadas ainda as seguintes tecnologias:
- Entity Framework InMemory
- ASP.NET Core Identity (com dados em memória)
As próximas seções descrevem os ajustes de configuração necessários, bem como de que maneira poderemos testar a aplicação via interface gráfica do Swagger.
Aproveito esse espaço para um convite…
Dia 27/09 (segunda) às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.
Ao longo desta live abordarei dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 5, ASP.NET Core, Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria, bancos de dados e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.
Teremos também algumas novidades do .NET 6 demonstradas na prática!
Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:
Configurando o uso de JWT com Swagger/Open API
Os ajustes deverão acontecer na classe Startup. Na chamada ao método AddSwaggerGen em ConfigureServices:
- Acionar o método AddSecurityDefinition, preenchendo as propriedades Description (uma descrição geral com detalhes de como funciona a autenticação), Name, In, Type, Scheme e BearerFormat;
- O método AddSecurityRequirement também será invocado, de forma a se configurar o uso de Bearer Authentication.
Ajustes mapeando retornos possíveis indicados via Swagger foram realizados no Controller responsável pelo login:
E na classe que representa a API a ser protegida:
Testes
Para os testes via Swagger serão utilizadas as seguintes credenciais:
Ao acessar o endpoint https://localhost:5001/swagger/index.html aparecerá o botão Authorize:
Chamadas à API de contagem de acessos sem informar um token resultarão em um erro de código 401 (Unauthorized):
Devemos então invocar a API de Login, obtendo assim um token de acesso:
Acionar o botão Authorize no início do formulário informar como conteúdo do campo Value a palavra Bearer, seguida por um espaço e concluindo o preenchimento com o valor do token JWT. Confirmar este procedimento clicando em Authorize:
Na sequência a isto clicar no botão Close:
Conseguiremos então a partir deste momento acionar normalmente a API de contagem de acessos, respeitando-se obviamente o tempo de validade do token: