Procedimientos para llamar a una API web de nivel inferior desde una aplicación de demonio

Las aplicaciones de demonio de .NET pueden llamar a una API web. Las aplicaciones de demonio .NET también pueden llamar a varias API web aprobadas previamente.

Llamada a una API web desde una aplicación de demonio

Aquí se muestra cómo usar el token para llamar a una API:

Microsoft.Identity.Web abstrae la complejidad de MSAL.NET. Le proporciona API de nivel superior que controlan los elementos internos de MSAL.NET por usted, como el procesamiento de errores de acceso condicional, el almacenamiento en caché.

Este es el archivo Program.cs de la aplicación de demonio que llama a una API de bajada:

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

Este es el archivo Program.cs de una aplicación de demonio que llama a 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}"); }

Llamada a varias API

Para las aplicaciones demonio, las API web a las que llame deben estar aprobadas previamente. No hay ningún consentimiento incremental con las aplicaciones de demonio. (No hay interacción del usuario). El administrador de inquilinos debe dar el consentimiento previo a la aplicación y a todos los permisos de la API. Si quiere llamar a varias API, adquiera un token para cada recurso, cada vez llamando a AcquireTokenForClient. MSAL usa la caché del token de la aplicación para evitar las llamadas de servicio innecesarias.

Pasos siguientes

Avance al siguiente artículo de este escenario, Paso a producción.