다음을 통해 공유


디먼 앱에서 다운스트림 웹 API를 호출하는 방법

.NET 디먼 앱은 웹 API를 호출할 수 있습니다. .NET 디먼 앱은 사전 승인된 여러 웹 API를 호출할 수도 있습니다.

디먼 애플리케이션에서 웹 API 호출

토큰을 사용하여 API를 호출하는 방법은 다음과 같습니다.

Microsoft.Identity.Web은 MSAL.NET의 복잡성을 추상화합니다. 조건부 액세스 오류 처리, 캐싱과 같은 MSAL.NET 내부를 처리하는 더 높은 수준의 API를 제공합니다.

다운스트림 API를 호출하는 디먼 앱의 Program.cs는 다음과 같습니다.

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를 호출하는 디먼 앱의 Program.cs입니다.

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

여러 API 호출

디먼 앱의 경우 호출하는 웹 API는 사전 승인을 받아야 합니다. 디먼 앱에는 증분 동의가 없습니다. (사용자 상호 작용이 없습니다.) 테넌트 관리자는 애플리케이션 및 모든 API 권한에 대해 사전에 동의를 제공해야 합니다. 여러 API를 호출하려는 경우 AcquireTokenForClient를 호출할 때마다 각 리소스에 대한 토큰을 획득합니다. MSAL은 애플리케이션 토큰 캐시를 사용하여 불필요한 서비스 호출을 방지합니다.

다음 단계