Webová aplikace, která volá webová rozhraní API: Získání tokenu pro aplikaci

Vytvořili jste objekt klientské aplikace. Teď ho použijete k získání tokenu pro volání webového rozhraní API. V ASP.NET nebo ASP.NET Core se volání webového rozhraní API provádí v kontroleru:

  • Získání tokenu pro webové rozhraní API pomocí mezipaměti tokenů Tento token získáte voláním metody MsAL (Microsoft Authentication Library) AcquireTokenSilent (nebo ekvivalentu ve službě Microsoft.Identity.Web).
  • Zavolejte chráněné rozhraní API a předejte mu přístupový token jako parametr.

Microsoft.Identity.Web přidává rozšiřující metody, které poskytují pohodlné služby pro volání Microsoft Graphu nebo podřízeného webového rozhraní API. Tyto metody jsou podrobně vysvětleny ve webové aplikaci, která volá webová rozhraní API: Volání rozhraní API. Pomocí těchto pomocných metod nemusíte token získat ručně.

Pokud ale chcete token získat ručně, následující kód ukazuje příklad použití Microsoft.Identity.Web k tomu na domovském řadiči. Volá Microsoft Graph pomocí rozhraní REST API (místo sady Microsoft Graph SDK). Obvykle nepotřebujete získat token, musíte vytvořit autorizační hlavičku, kterou přidáte do požadavku. Pokud chcete získat autorizační hlavičku, vložíte IAuthorizationHeaderProvider službu injektáží závislostí do konstruktoru kontroleru (nebo konstruktoru stránky, pokud používáte Blazor) a použijete ji v akcích kontroleru. Toto rozhraní obsahuje metody, které vytvářejí řetězec obsahující protokol (Bearer, Pop, ...) a token. Pokud chcete získat autorizační hlavičku pro volání rozhraní API jménem uživatele, použijte (CreateAuthorizationHeaderForUserAsync). Pokud chcete získat autorizační hlavičku pro volání podřízeného rozhraní API jménem samotné aplikace, použijteCreateAuthorizationHeaderForAppAsync ().

Metody kontroleru jsou chráněny atributem [Authorize] , který zajišťuje, že webovou aplikaci můžou používat jenom ověření uživatelé.

[Authorize]
public class HomeController : Controller
{
 readonly IAuthorizationHeaderProvider authorizationHeaderProvider;

 public HomeController(IAuthorizationHeaderProvider authorizationHeaderProvider)
 {
  this.authorizationHeaderProvider = authorizationHeaderProvider;
 }

 // Code for the controller actions (see code below)

}

ASP.NET Core zpřístupňuje IAuthorizationHeaderProvider injektáž závislostí.

Tady je zjednodušený kód akce HomeController, který získá token pro volání Microsoft Graphu:

[AuthorizeForScopes(Scopes = new[] { "user.read" })]
public async Task<IActionResult> Profile()
{
 // Acquire the access token.
 string[] scopes = new string[]{"user.read"};
 string accessToken = await authorizationHeaderProvider.CreateAuthorizationHeaderForUserAsync(scopes);

 // Use the access token to call a protected web API.
 HttpClient client = new HttpClient();
 client.DefaultRequestHeaders.Add("Authorization", accessToken);
 string json = await client.GetStringAsync(url);
}

Pokud chcete lépe porozumět kódu potřebnému pro tento scénář, podívejte se na krok fáze 2 (2-1-Web App Calls Microsoft Graph) kurzu ms-identity-aspnetcore-webapp-tutorial.

AuthorizeForScopes Atribut nad akcí kontroleru (nebo na stránce Razor Page, pokud používáte šablonu Razor), poskytuje Microsoft.Identity.Web. Zajistí, že se uživateli v případě potřeby zobrazí výzva k vyjádření souhlasu a přírůstkově.

Existují i další složité varianty, například:

  • Volání několika rozhraní API
  • Zpracování přírůstkového souhlasu a podmíněného přístupu

Tyto pokročilé kroky jsou popsány v kapitole 3 kurzu 3-WebApp-multi-API .

Další kroky

Přejděte k dalšímu článku v tomto scénáři a zavolejte webové rozhraní API.