Aracılığıyla paylaş


Bir daemon uygulamasından aşağı akış web API'sini çağırma

.NET daemon uygulamaları bir web API'si çağırabilir. .NET daemon uygulamaları önceden onaylanan birkaç web API'lerini de çağırabilir.

Bir daemon uygulamasından web API'si çağırma

Bir API'yi çağırmak için belirteci şu şekilde kullanabilirsiniz:

Microsoft.Identity.Web, MSAL.NET karmaşıklığını soyutlar. Koşullu Erişim hatalarını işleme, önbelleğe alma gibi MSAL.NET iç bileşenlerini işleyen daha üst düzey API'ler sağlar.

Aşağıda aşağı akış API'sini çağıran daemon uygulamasının Program.cs verilmiştir:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

// In the Program.cs, acquire a token for your downstream API

var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
tokenAcquirerFactory.Services.AddDownstreamApi("MyApi",
    tokenAcquirerFactory.Configuration.GetSection("MyWebApi"));
var sp = tokenAcquirerFactory.Build();

var api = sp.GetRequiredService<IDownstreamApi>();
var result = await api.GetForAppAsync<IEnumerable<TodoItem>>("MyApi");
Console.WriteLine($"result = {result?.Count()}");

Microsoft Graph'i çağıran bir daemon uygulamasının Program.cs aşağıdadır:

var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
tokenAcquirerFactory.Services.AddMicrosoftGraph();
var serviceProvider = tokenAcquirerFactory.Build();
try
{
    GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
    var users = await graphServiceClient.Users
        .GetAsync(r => r.Options.WithAppOnly());
    Console.WriteLine($"{users.Count} users");
    Console.ReadKey();
}
catch (Exception ex) { Console.WriteLine("We could not retrieve the user's list: " + $"{ex}"); }

Çeşitli API'leri çağırma

Daemon uygulamaları için, çağırdığınız web API'lerinin önceden onaylanması gerekir. Daemon uygulamaları için artımlı onay yoktur. (Kullanıcı etkileşimi yoktur.) Kiracı yöneticisinin uygulama ve tüm API izinleri için önceden onay vermesi gerekir. Çeşitli API'leri çağırmak istiyorsanız, her çağırdığınızda AcquireTokenForClienther kaynak için bir belirteç alın. MSAL, gereksiz hizmet çağrılarını önlemek için uygulama belirteci önbelleğini kullanır.

Sonraki adımlar

Bu senaryoda bir sonraki makale olan Üretime taşı'ya geçin.