Sdílet prostřednictvím


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

Po vytvoření objektu klientské aplikace ho použijte k získání tokenu, který můžete použít k volání webového rozhraní API.

Kód v kontroleru

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 webové rozhraní API může používat pouze ověřená volání.

[Authorize]
public class MyApiController : Controller
{
    /// <summary>
    /// The web API will accept only tokens 1) for users, 2) that have the `access_as_user` scope for
    /// this API.
    /// </summary>
    static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };

     static readonly string[] scopesToAccessDownstreamApi = new string[] { "api://MyTodolistService/access_as_user" };

     readonly IAuthorizationHeaderProvider authorizationHeaderProvider;

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

    [RequiredScopes(Scopes = scopesToAccessDownstreamApi)]
    public IActionResult Index()
    {
        // Get an authorization header.
        IAuthorizationHeaderProvider authorizationHeaderProvider = this.GetAuthorizationHeaderProvider();
        string[] scopes = new string[]{"user.read"};
        string authorizationHeader = await authorizationHeaderProvider.CreateAuthorizationHeaderForUserAsync(scopes);

        return await callTodoListService(authorizationHeader);
    }
}

Podrobnosti o metodě najdete ve callTodoListService webovém rozhraní API, které volá webová rozhraní API: Volání rozhraní API.

Další kroky

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