Novidades do .NET 7: gerando tokens JWT para testes de APIs no ASP.NET Core sem complicações

Testar APIs REST protegidas por JWT (JSON Web Token) nem sempre é uma tarefa fácil. A geração desses tokens depende em muitos casos da configuração de uma solução de autenticação/autorização, sendo bons exemplos disto Identity providers como Keycloak, Azure AD B2C e IdentityServer. É possível também que este processo dependa até de uma solução própria para controle de acessos.

Procurando simplificar os testes com JWT em APIs REST criadas com ASP.NET Core, o .NET 7 conta agora com uma opção de geração de tokens via linha de comando. Trata-se da instrução:

Na animação a seguir podemos observar o uso deste comando em uma API REST para testes, incluindo o preenchimento automático de configurações no arquivo appsettings.Development.json:

Clique nesta imagem para visualizar com uma melhor resolução

É possível ir além dessa instrução de exemplo, com parâmetros como --claim e --role (para simulações com claims e roles). O próprio arquivo appsettings.Development.json também pode ser editado diretamente, com o preenchimento e alteração de configurações que determinem o comportamento de tokens empregados nos testes. Na documentação da funcionalidade (clique neste link) há maiores detalhes sobre as diferentes opções existentes.

O exemplo apresentado nesse artigo está disponível no GitHub:

https://github.com/renatogroffe/ASPNETCore7-REST_API_LocalUserJwts_ContagemAcessos

Caso achem útil a 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!

Para habilitar a utilização de JWT foi adicionado ao projeto o package Microsoft.AspNetCore.Authentication.JwtBearer:

Em Program.cs foram efetuados os seguintes ajustes:

  • Há chamadas aos métodos AddAuthorization e AddAuthentication e (na sequência a este último AddJwtBearer), a fim de configurar o uso de JWT na API de testes. Nota-se aqui inclusive que nenhum Identity Provider foi configurado;
  • O middleware para ativar a autorização via JWT foi ativado, invocando-se para isto o método UseAuthorization.

Os testes de envio de requisições à API de contagem de acessos utilizaram o token JWT gerado anteriormente, como indicado na próxima animação:

Clique nesta imagem para visualizar com uma melhor resolução

E finalizo este post com um convite…

Neste próximo evento ONLINE e GRATUITO do Canal .NET serão apresentadas as principais novidades que integram a versão 11 da linguagem C#, com exemplos de implementação que já utilizam o .NET 7 e ASP.NET Core.

Quando: 30/01/2023 (segunda) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://bit.ly/live-csharp11-novidades

--

--

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Renato Groffe

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