Comment appeler une API web en aval à partir d’une application démon

Les applications démon .NET peuvent appeler une API web. Des applications démon .NET peuvent également appeler plusieurs API web pré-approuvées.

Appeler une API web à partir d'une application démon

Pour appeler une API à l'aide du jeton, procédez comme suit :

Microsoft.Identity.Web fait abstraction de la complexité des MSAL.NET. Il vous fournit des API de niveau supérieur qui gèrent les éléments internes de MSAL.NET pour vous, comme le traitement des erreurs d’accès conditionnel et la mise en cache.

Voici le fichier Program.cs de l’application démon appelant une API en aval :

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

Voici le fichier Program.cs d’une application démon qui appelle 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}"); }

Appels de plusieurs API

Pour des applications de démon, les API web que vous appelez doivent être pré-approuvées. Il n'y a pas de consentement incrémentiel avec les applications démon. (Il n'y a aucune interaction avec l'utilisateur.) L'administrateur client doit donner son consentement à l'avance pour l'application et toutes les autorisations d'API. Si vous souhaitez appeler plusieurs API, acquérez un jeton pour chaque ressource, en appelant AcquireTokenForClient à chaque fois. MSAL utilise le cache de jetons d’application afin d’éviter des appels de service inutiles.

Étapes suivantes

Passez à l’article suivant de ce scénario, Passer en production.