ASP.NET Core 3.1 — IdentityServer4 — MVC-Client (Parte 8)

Na Parte 7 configuei o IdentityServer4 para que uma aplicação MVC (Model View Controller) possa ter uma tela de login para que os usuários acessem com seu usuário e senha.

Nesta parte, vamos ver como configurar a aplicação MVC (Model View Controller) para que esse processo seja totalmente automático.

Criar aplicação MVC

Eu criei uma aplicação ASP.NET Core Web Application conforme demonstrado nas imagens a seguir.

O Scaffold vai se encarregar de carregar o Bootstrap, JQuery de forma básica para que seja mais rápido. Caso você queira, dê uma olhada na Parte 6 onde eu falo sobre o Grunt e traga a configuração para esta aplicação, quanto a isso não há nenhum problema, perceba que se você fizer isso, já facilitou o processo de configuração dos pacotes de interface.

Veja que na criação da aplicação MVC não opter por configurá-la com o Identity, bem diferente do que fiz na aplicação do IdentityServer4, pois é lá que o nosso login está, ele que vai simular a autenticação como se fosse o Facebook.

NuGet

Precisei do pacote Microsoft.AspNetCore.Authentication.OpenIdConnect que habilita os métodos de extensão do OpenID Connect.

Startup.cs

A configuração completa do Startup.cs está no gist abaixo, porém vou falar sobre algumas configurações importantes especificamente do método AddOpenIdConnect

  • Authority: É o endereço do IdentityServer4 que configuramos. Lembre-se que em produção vai ser obrigatório o uso de HTTPS.
  • ClientId: No post anterior configuramos um Client para a aplicação MVC e é aqui que especificamos que esta aplicação MVC é uma aplicação cliente para o IdentityServer4.
  • ClientSecret: Senha do Client.
  • GetClaimsFromUserInfoEndpoint: Permite que o User que está lá na ControllerBase venha preenchido.
  • Scope: No post anterior, também configuramos os Resources do IdentityServer4, e aqui apenas estamos indicando que gostaríamos que nas Claims os dados do OpenID Connect (obrigatório) sejam retornados para a aplicação MVC e que seja permitido o acesso à API de pagamento.

Eu pulei algumas configurações, pois algumas delas vão fazer mais sentido mais adiante em outro post.

Na prática

  • Inicie a aplicação MVC e a do IdentityServer4;
  • Acesse http://localhost:5004 que é o endereço da aplicação MVC.

Cookies

Dê uma olhada nos cookies da aplicação, você vai encontrar um chamado Cookies ele vem da configuração CookieAuthenticationDefaults.AuthenticationScheme, você pode mudar esse nome, mas não esqueça de mudar em outros lugares onde esse nome da constante do cookie é usada.
Você vai encontrar também o cookie com o nome idsrv.session onde idsrv é a abreviação de IdentityServer.
Dica: Apague um cookie ou outro e vá dando refresh da aplicação para você entender a dinâmica, isso é bem importante para reforçar o funcionamento.

Como o foco não está na interface, seria interessante você baixar o projeto para pegar todas as alterações, ou comparar o branch anterior com este novo que foi criado. Acesse o código fonte no GitHub.

Continua em ASP.NET Core 3.1 — IdentityServer4 — MVC-API Request (Parte 9).

Originally published at http://alextochetto.com on April 6, 2020.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store