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

Renato Groffe
3 min readJan 17, 2022

--

A aplicação apresentada neste artigo é uma variação de outro exemplo que detalhei no artigo a seguir, em que utilizei o .NET 5 como base para a implementação na época:

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

Neste novo post retomo o exemplo da API REST de contagem de acessos, fazendo uso para isso das seguintes tecnologias:

  • .NET 6
  • ASP.NET Core
  • JWT (JSON Web Tokens)
  • Entity Framework InMemory
  • ASP.NET Core Identity (com dados em memória)
  • Swagger/Open API

Este repositório já foi disponibilizado no GitHub:

https://github.com/renatogroffe/ASPNETCore6-REST_API-JWT-Swagger_ContagemAcessos

Sendo formado pelos projetos:

  • APIContagem
  • APIs.Security.JWT (uma Class Library criada para facilitar o reuso desta solução)

Em relação à versão anterior, as principais mudanças estão em Program.cs e englobam instruções para a configuração de recursos (até o .NET 5 isso acontecia na classe Startup). Um exemplo disto está na chamada a métodos como AddJwtSecurity (definido na Class Library APIs.Security.JWT) e UseAuthorization (a fim de exigir o acesso à API de contagem de acessos empregando tokens):

O tempo de validade do token (TokenConfigurations:Seconds) e a chave para criptografia do mesmo (TokenConfigurations:SecretJwtKey) estão em appsettings.json:

As classes LoginController:

E ContadorController:

Foram ajustadas para se chegar a uma implementação mais um enxuta, graças ao uso de recursos como Implicit Usings e File-scoped namespaces. Para saber mais sobre estas novidades do .NET 6 e C# 10 acesse os artigos:

Novidades do .NET 6: Implicit Usings

Novidades do C# 10: File-scoped namespaces

Nos projetos APIContagem:

E APIs.Security.JWT:

Estão com o uso de Nullable Reference Types habilitado por default (propriedade Nullable como enable nos seus respectivos arquivos .csproj).

Isto implicará no uso de declarações como null-conditional operator (?) em vários pontos da solução, como exemplificado pelos tipos User, TokenConfigurations e Token:

E null-forgiving operator (!), como no caso da classe AccessManager (linhas 59 e 62):

Testes via Swagger dependerão das credenciais:

Na próxima imagem temos um exemplo de geração de um token de acesso:

Este token deverá ser informado no campo Value na tela que aparecerá ao acionar o botão Authorize, sendo precedido pela palavra Bearer e um caracter de espaço:

Chamadas à API de contagem de acesso produzirão resultados similares ao da imagem seguinte, levando em conta inclusive o tempo de validade do token informado:

E aproveito este espaço para um convite…

Dia 18/01/2022 (terça) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Será uma live em que apresentarei exemplos utilizando vários frameworks e a integração com soluções como o Azure DevOps, bem como novidades do .NET 6 e orientações sobre como automatizar os testes, o build e o deployment de seus projetos.

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-testes-dotnet6-dicas-truques-novidades

--

--

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

Responses (2)