ASP.NET Core + JWT: configurando o uso do Swagger para testes com tokens

Renato Groffe
3 min readSep 20, 2021

--

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:

https://bit.ly/live-backend-dotnet-set-2021

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:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker