Aracılığıyla paylaş


Web API'lerini çağıran bir web API'si: Uygulama için belirteç alma

bir istemci uygulama nesnesi derledikten sonra, web API'sini çağırmak için kullanabileceğiniz bir belirteç almak için bunu kullanın.

Denetleyicideki kod

Microsoft.Identity.Web , Microsoft Graph veya aşağı akış web API'sini çağırmak için kolaylık hizmetleri sağlayan uzantı yöntemleri ekler. Bu yöntemler, web API'lerini çağıran bir web uygulamasında ayrıntılı olarak açıklanmıştır: API çağırma. Bu yardımcı yöntemlerle, el ile belirteç almanız gerekmez.

Bununla birlikte, el ile belirteç almak istiyorsanız, aşağıdaki kod bir ev denetleyicisinde bunu yapmak için Microsoft.Identity.Web kullanma örneğini gösterir. REST API'yi (Microsoft Graph SDK'sı yerine) kullanarak Microsoft Graph'ı çağırır. Genellikle belirteç almanız gerekmez, isteğinize eklediğiniz bir Yetkilendirme üst bilgisi oluşturmanız gerekir. Yetkilendirme üst bilgisi almak için, hizmeti denetleyicinizin oluşturucusunda bağımlılık ekleme yoluyla (veya Blazor kullanıyorsanız sayfa oluşturucunuza) eklersiniz IAuthorizationHeaderProvider ve denetleyici eylemlerinizde kullanırsınız. Bu arabirim, protokolü (Taşıyıcı, Pop, ...) ve belirteci içeren bir dize oluşturan yöntemlere sahiptir. Kullanıcı adına api çağırmak üzere bir yetkilendirme üst bilgisi almak için (CreateAuthorizationHeaderForUserAsync kullanın. Uygulamanın kendisi adına aşağı akış API'sini çağırmak üzere bir yetkilendirme üst bilgisi almak için, bir daemon senaryosunda (CreateAuthorizationHeaderForAppAsync kullanın.

Denetleyici yöntemleri, web API'sini yalnızca kimliği doğrulanmış çağrıların kullanabilmesini sağlayan bir [Authorize] öznitelikle korunur.

[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);
    }
}

Yöntemi hakkında callTodoListService ayrıntılı bilgi için bkz . Web API'lerini çağıran bir web API'si: API çağırma.

Sonraki adımlar

Bu senaryoda api çağırma başlıklı sonraki makaleye geçin.