Condividi tramite


Come chiamare un'API Web downstream da un'app daemon

Le app daemon .NET possono chiamare un'API Web. Le app daemon .NET possono anche chiamare diverse API Web preapprovate.

Chiamata di un'API Web da un'applicazione daemon

Ecco come usare il token per chiamare un'API:

Microsoft.Identity.Web elimina la complessità di MSAL.NET. Offre API di livello superiore che gestiscono automaticamente gli elementi interni di MSAL.NET, come ad esempio l'elaborazione di errori di accesso condizionale, la memorizzazione nella cache.

Ecco la Program.cs dell'app daemon che chiama un'API downstream:

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

Ecco la Program.cs di un'app daemon che chiama Microsoft Graph:

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

Chiamata di diverse API

Per le app daemon, le API Web chiamate devono essere preapprovate. Non esiste alcun consenso incrementale con le app daemon. Non esiste alcuna interazione dell'utente. L'amministratore del tenant deve fornire il consenso in anticipo per l'applicazione e tutte le autorizzazioni API. Se si vogliono chiamare diverse API, acquisire un token per ogni risorsa, ogni volta che si chiama AcquireTokenForClient. MSAL usa la cache dei token dell'applicazione per evitare chiamate di servizio non necessarie.

Passaggi successivi

  • Per ulteriori informazioni, creare un'applicazione a pagina singola (SPA) che effettua l'accesso degli utenti nella seguente serie di esercitazioni in più parti.

  • Esplorare gli esempi di codice del servizio/daemon di Microsoft Identity Platform