.NET 6 + Minimal APIs + JWT + Swagger: implementando a utilização de tokens

Renato Groffe
3 min readSep 25, 2022

--

Este novo artigo traz uma variação de outro exemplo apresentado neste blog e que aborda como configurar o uso de JWT (JSON Web Tokens) em APIs REST, só que desta vez demonstrando como podemos proteger endpoints em um projeto .NET 6 que faz uso de Minimal APIs.

Apresentei esta solução inclusive em uma live recente no Canal .NET, com o conteúdo da mesma podendo ser assistido gratuitamente no YouTube:

O próximo link traz o artigo que serviu de base para a implementação do exemplo deste post:

.NET 6 + ASP.NET Core + JWT + Swagger: implementando a utilização de tokens

Quanto ao exemplo com Minimal APIs, o mesmo foi disponibilizado no GitHub:

https://github.com/renatogroffe/ASPNETCore6-MinimalAPIs-JWT-Swagger-Extensions_ContagemAcessos

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

Muitas das configurações detalhadas no antigo anterior e implementadas na Class Library APIs.Security.JWT se mantiveram, com a novidade estando na classe SwaggerJWTExtension:

O tipo SwaggerJWTExtension conta com o Extension Method AddSwaggerGenJwt, o qual possibilita configurar a interface gráfica do Swagger/OpenApi para que disponibilize um campo para preenchimento do Bearer Token (JWT) antes do envio de requisições a endpoints protegidos:

Já no arquivo Program.cs teremos os endpoints /contador e /login, com as configurações para geração de tokens e proteção via JWT:

  • A chamada ao método AddSwaggerGenJwt fará com que um campo para preenchimento seja gerado na interface do Swagger/OpenApi;
  • O método AddJwtSecurity habilitará neste projeto (APIContagem) o uso de JWT, empregando para isto recursos definidos na biblioteca APIs.Security.JWT;
  • Ao invocar o método UseAuthorization estaremos ativando o middleware do ASP.NET Core responsável por autenticação/autorização em endpoints;
  • A instrução [Authorize(“Bearer”)] na declaração de MapGet (linha 73) fará com que o endpoint /contador exija a presença de um token em requisições direcionadas ao mesmo;
  • O uso do atributo AllowAnonymous em MapPost (linha 94) permitirá que o endpoint /login receba requisições anônimas, validando as credenciais fornecidas e devolvendo um Bearer Token (JWT) se este for o caso.

Para os testes via interface do Swagger/OpenApi foram utilizadas as credenciais:

A próxima imagem traz um exemplo de geração de um token de acesso (através do endpoint /login):

O token será então utilizado no preenchimento do campo Value da tela que aparecerá ao acionar o botão Authorize, com a palavra Bearer e um caracter de espaço antecedendo o mesmo:

Requisições enviadas ao endpoint de contagem de acessos (/contador) produzirão resultados similares ao da imagem seguinte, considerando sempre o tempo de validade do token informado:

E concluo este artigo com um convite…

Nesta segunda 26/09 às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Uma nova live abordando dicas e truques úteis em vários cenários envolvendo o teste de aplicações .NET. Ao longo da apresentação serão demonstrados exemplos utilizando vários frameworks e a integração com soluções como Azure DevOps e GitHub Actions, bem como orientações sobre como automatizar os testes, o build e o deployment de seus projetos!

Faça sua inscrição em:
https://bit.ly/live-testes-dotnet-dicas-truques-3aed

--

--

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

No responses yet