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

No Post 8 eu mostrei como fazer com que o IdentityServer4 se tornasse uma aplicação para que o usuário pudesse se autenticar com seu login e senha, sem que houvesse a necessidade da aplicação MVC implementar o seu próprio login.

Isso significa que podemos ter várias aplicações que implementam o mesmo login com mesmo usuário e senha? A response é sim.

OpenID Connect

IdentityServer4 — AllowedScopes

Chamada da API de Pagamento

Executando

Acesse a URL da aplicação MVC, realize o login com o usuário e senha, mostrei tudo funcionando na Parte 8.

Depois de logado, vai aparecer um menu novo, chamado API conforme exibido na imagem a seguir.

Clique no menu API e você vai ter um resultado muito parecido com o da imagem a seguir.

Access Token

ID Token

JSON

Uso do HttpClientFactory

As alterações feitas estão no arquivo Startup.cs

services.AddHttpClient("payment", options => { options.BaseAddress = new Uri("http://localhost:5002"); });

e no arquivo HomeController.cs

public async Task<IActionResult> RequestApi() { var client = _httpClientFactory.CreateClient("payment"); var accessToken = HttpContext.GetTokenAsync("access_token").Result; var idToken = HttpContext.GetTokenAsync("id_token").Result; client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken); var response = await client.GetAsync("/api/payment"); if (!response.IsSuccessStatusCode) { return View(nameof(Privacy)); } var model = new PaymentApiViewModel { AccessToken = accessToken, IdToken = idToken, JsonResult = response.Content.ReadAsStringAsync().Result }; return View(model); }

Sugiro você baixar o projeto para pegar todas as alterações, acesse o código fonte no GitHub.

Continua em ASP.NET Core 3.1 — IdentityServer4 — Client-Security (Parte 10).

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