Após o lançamento da versão 3 do .NET Core, aconteceram mudanças importantes, especialmente em Autenticação e Autorização. Para configurar uma API ASP.NET Core 3.1 segura, você vai precisar de tokens JWT emitidos pelo SSO IdentityServer4.
Framework OAuth2
OAuth 2.0 é o padrão que permite autorização sem guardar senhas dos usuários. Usando um Bearer
token, um aplicativo pode acessar conteúdos protegidos sem as senhas do usuário.
O Fluxo
- A API recebe o Bearer pelo Header Authorization.
- A API checa o token no endpoint
jwks_uri
. - A assinatura do token é checada. Se aprovada, a requisição é aceita; caso contrário, retorna um erro 401.
VAMOS AO CÓDIGO
Para começar:
- Use ASP.NET Core 3.1.
- Configure Docker.
- Use JP Project 3.1.
- Trabalhe com o Visual Studio 2019.
- Use o Postman.
Crie um novo projeto ASP.NET Core Web Application chamado SecureApi
. No Manage Nuget Packages, instale o IdentityServer4.AccessTokenValidation. No Startup.cs
, configure a integração com OAuth 2.0.
Testando
Coloque [Authorize]
no WeatherForecastController.cs
e ajuste a porta no launchSettings.json
para 5020
.
SSO
Configure o SSO com o SSO do JPProject. Crie uma Protected Resource para a API e ajuste os Api Secrets.
Configurar Client API
No postman, configure um client e adicione report-api
no Scope.
Testando Postman
No Postman, gere um token Bearer
usando client_credentials
. Use esse token em uma nova requisição GET para http://localhost:5020/weatherforecast
.
Revisando
Sua API agora usa tokens Bearer
para autorização, verificando a validade no endpoint jwks_uri
.
Conclusão
Com a configuração certa, a segurança fica mais fácil de gerenciar. O código completo está no GitHub. Esse tipo de implementação deixa o sistema mais seguro contra os desafios de hoje em segurança.