Een downstream-web-API aanroepen vanuit een daemon-app

.NET-daemontoepassingen kunnen een web-API aanroepen. .NET-daemon-apps kunnen ook verschillende vooraf goedgekeurde web-API's aanroepen.

Een web-API aanroepen vanuit een daemontoepassing

Gebruik het token als volgt om een API aan te roepen:

Microsoft.Identity.Web abstraheert de complexiteit van MSAL.NET. Het biedt u API's op een hoger niveau die de interne functies van MSAL.NET voor u verwerken, zoals het verwerken van fouten met voorwaardelijke toegang, opslaan in cache.

Hier volgt de Program.cs van de daemon-app die een downstream-API aanroept:

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()}");

Hier volgt de Program.cs van een daemon-app die Microsoft Graph aanroept:

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

Meerdere API's aanroepen

Voor daemon-apps moeten de web-API's die u aanroept vooraf worden goedgekeurd. Er is geen incrementele toestemming bij daemontoepassingen. (Er is geen gebruikersinteractie.) De tenantbeheerder moet vooraf toestemming geven voor de toepassing en alle API-machtigingen. Als u meerdere API's wilt aanroepen, moet u voor elke resource een token verkrijgen, telkens wanneer u AcquireTokenForClient aanroept. MSAL gebruikt de cache van het toepassingstoken om onnodige service-aanroepen te voorkomen.

Volgende stappen

Ga verder met het volgende artikel in dit scenario: Verplaatsen naar productie.