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:
dotnet user-jwts create
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:
É 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:
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