.NET 5 + APIs REST + JWT: exemplo de implementação
Dentre os artigos com mais acessos aqui no meu blog estão conteúdos que abordam o uso de JSON Web Tokens (JWT) em APIs REST criadas com o ASP.NET Core. A seguir estão os diversos posts que publiquei a respeito deste assunto:
ASP.NET Core + JWT: Guia de Referência
ASP.NET Core + JWT + Azure Key Vault: exemplo de implementação
E aproveito este espaço para um convite…
Vem aí a edição 2020 do DevWeek, evento ONLINE e GRATUITO realizado pelo Canal .NET. Esse ano teremos novamente 9 palestras entregues ao longo de 3 dias de evento: 30/Novembro (segunda), 01/Dezembro (terça) e 02/Dezembro (quarta), sempre a partir das 20:00 — horário de Brasília.
Arquitetura de Software, boas práticas no desenvolvimento de APIs REST, .NET 5, ASP.NET 5, Xamarin, JWT, WSL, PowerShell, GraphQL, TypeScript, Keycloak e muito mais!
Junte-se a nós e venha aprender mais sobre tendências, boas práticas, ferrmentas e técnicas de desenvolvimento de software.
Para efetuar sua inscrição clique no link:
Neste novo post trago novo exemplo de implementação de uma API REST protegida por JWT, com os projeto desta vez já convertido para o .NET 5. Trata-se de uma API para contagem de acessos criada com ASP.NET Core (uma variação do projeto apresentado no artigo sobre ASP.NET Core + JWT + Azure Key Vault):
ASP.NET Core 5 + REST API + Contagem de Acessos + JWT
Um segredo chamado Secret-JWTKey foi definido no arquivo appsettings.json, com este valor servindo de base para a geração de uma chave de criptografia simétrica:
Importante ressaltar que esta configuração pode ser substituída por uma variável de ambiente ao se optar por containers Docker (ou mesmo um Secret com Kubernetes). Serviços na nuvem como Azure App Service também permitem a definição de configurações, sobrepondo assim valores inicialmente definidos no arquivo appsettings.json.
Vale destacar também que este projeto foi ajustado de forma a empregar algumas funcionalidades novas introduzidas com o C# 9.0. Um bom exemplo disto é a classe AccessManager, em que podemos notar as presenças do operador is not (linhas 32 e 38) e de new expressions (linhas 59 e 83):
Testes para a obtenção de um novo token podem ser feitos com a string JSON:
Um novo toker pode ser obtido via Postman por meio da URL https://localhost:5001/login:
E com este token podemos acessar o contador de acessos em https://localhost:5001/contador: