ASP.NET Core 3.1 — IdentityServer4 — Clients (Parte 7)

Na Parte 6, eu mostrei o básico de como configurar a aplicação web com Identity e deixá-la preparada para suportar o Bootstrap e o JQuery. Este foi o primeiro passo para configurar a tela de login para autenticar um usuário.

O objetivo principal deste post é prepararmos o IdentityServer4 para que ele possa redirecionar uma aplicação cliente para sua tela de login e após o usuário se logar, que o IdentityServer4 redirecione o usuário para o lugar de onde ele veio, considerando também o logout.

Na Parte 3 eu falei sobre Clients para API, agora falaremos de um Client para uma aplicação MVC (Model View Controller) que veremos no próximo post, mas antes de começarmos chegou o momento de falarmos sobre os grant types, pois lá na API usamos a opção client_credentials, agora como nossa aplicação cliente não é uma API, vamos ver outras opções.

Grant Types

As especificações do OpenID Connect (oidc) e OAuth 2.0 define os grant types também podendo ser chamado de flow ou protocol flows. Os grant types indicam como um Client pode interagir com um determinado token, Vamos ver alguns deles que vamos utilizar.

  • client credentials: é o meio mais simples de comunicação Machine to Machine Communication onde o token é obrigatório mas as informações de um determinado usuário não estão presentes no token.

Para o Client que será configurado para a aplicação MVC utilizaremos o grant type hybrid mais o client credentials, pois desta forma nossa aplicação MVC poderá acessar a API de pagamento com o mesmo token do usuário autenticado.

Client

Quando eu falei em criar uma aplicação MVC, para que ela tenha permissão de acessar o IdentityServer4 é necessário que um Client seja criado, então criei um Client com o nome de mvc-client que está no conteúdo do arquivo IdentityServerSeed.cs.

Vamos a alguns detalhes sobre esse Client:

  • RedirectUris: Após efetuar o login, é para esta URL que o usuário será redirecionado, ou seja, a URL da aplicação MVC.

Statup.cs

Fiz 2 alterações aqui.

Chamada dos métodos app.SeedResources(); e app.SeedUser();.

Flow

Mais acima falei do flow, então o fluxo de funcionamento — sequenciamento — funciona da seguinte forma:

  1. Usuário clica no botão de login;

Para algo mais próximo possível disso que falamos, vamos usar a página do Meetup como exemplo:

  • Acesse o site do Meetup;

O que fizemos com o IdentityServer4 foi transformá-lo no login do Facebook, o flow é exatamente o mesmo.

Login

Aqui eu tentei deixar a tela de login mais próxima possível do Facebook.
Execute o projeto e acesse a URL conforme a image a seguir

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 ASP.NET Core 3.1 — IdentityServer4 — MVC-Client (Parte 8).

Originally published at http://alextochetto.com on April 3, 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