ASP.NET Core 3.1 — IdentityServer4 — EF-Identity (Parte 5)

Na Parte 4 eu mostrei como configurar o IdentityServer4 utilizando o EntityFramework e SQL Server como banco de dados, porém até agora não vimos nenhum usuário informando o login e senha para se logar em um sistema baseado em MVC (Model View Controller) por exemplo, para isso vamos seguir um caminho simples e você pode evoluir tudo isso depois, pois o foco não está na elaboração da interface, mas como fazer um login e senha funcionar de forma segura e independente.

Identity

Scaffold

Você vai encontrar maiores informações sobre o Scaffold aqui.

Ajustes de código

  • Localize o arquivo ApplicationDbContext.cs e mova-o para a raiz do projeto na pasta Data, vai ficar mais organizado neste momento por conta da namespace criada.
  • Dentro da pasta Models na raiz do projeto, crie o arquivo ApplicationUser.cs, ele vai gerar a classe com o mesmo nome, e você apenas acrescente a herança da classe IdentityUser.

Statups.cs

  • AddDefaultIdentity: Este método já inicializa alguns serviços automaticamente, como o DefaultUI e o DefaultTokenProviders.
  • AddIdentity: Com este método você pode adicionar os serviços necessários conforme sua necessidade.

O restante das configurações você pode conferir no arquivo disponível conforme gist a seguir.

Templates

dotnet new is4aspid -n IdentityServerAspNetIdentity

Migrations

Microsoft.EntityFramework Microsoft.EntityFramework.Tools

Add-Migration Initial_Identity -Context ApplicationDbContext

Update-Database -Context ApplicationDbContext

Caso você queira que a própria execução da aplicação crie as tabelas após criar as migrations basta acrescentar a linha a seguir lá no método de extensão “RunMigration”.

serviceScope.ServiceProvider.GetRequiredService().Database.Migrate();

Banco de dados

Microsserviço (STS + Users)

Execução

Caso você tenha dúvidas, eu disponibilizei o código no GitHub em um branch chamado identityserver-identity.

Continua em ASP.NET Core 3.1 — IdentityServer4 — Identity-UI (Parte 6).

Originally published at http://alextochetto.com on March 13, 2020.