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

  1. A API recebe o Bearer pelo Header Authorization.
  2. A API checa o token no endpoint jwks_uri.
  3. 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.