웹 API를 호출하는 데스크톱 앱: 코드 구성
에 적용됨: Workforce 임차인, 회색 X가 있는 흰색 원
외부 임차인(자세히 알아보기)
이제 애플리케이션을 만들었으므로 애플리케이션 좌표를 사용하여 코드를 구성하는 방법을 알아봅니다.
데스크톱 앱을 지원하는 Microsoft 라이브러리
다음 Microsoft 라이브러리는 데스크톱 앱을 지원합니다.
언어 / 프레임워크 | 프로젝트 진행 중 GitHub |
패키지 | 가져오기 시작됨 |
사용자 로그인 | 웹 API 액세스 | GA(일반 공급) 또는 공개 미리 보기1 |
---|---|---|---|---|---|---|
전자 | MSAL Node.js | msal-node | — |
![]() |
![]() |
공개 프리뷰 |
Java | MSAL4J | msal4j | — |
![]() |
![]() |
GA |
macOS(Swift/Obj-C) | iOS 및 macOS용 MSAL | MSAL | 자습서 |
![]() |
![]() |
GA |
UWP | MSAL.NET | Microsoft.Identity.Client | 자습서 |
![]() |
![]() |
GA |
WPF(Windows Presentation Foundation) | MSAL.NET | Microsoft.Identity.Client | 자습서 |
![]() |
![]() |
GA |
1온라인 서비스에 대한 유니버설 사용 조건은 공개 미리 보기의 라이브러리에 적용됩니다.
퍼블릭 클라이언트 애플리케이션
코드 관점에서 볼 때 데스크톱 애플리케이션은 퍼블릭 클라이언트 애플리케이션입니다. 이 구성은 대화형 인증을 사용하는지 여부에 따라 약간 다릅니다.
MSAL.NET IPublicClientApplication
을 빌드하고 조작해야 합니다.
코드 전용
다음 코드는 퍼블릭 클라이언트 애플리케이션을 인스턴스화하고 Microsoft Azure 퍼블릭 클라우드의 사용자는 다음 코드를 사용하여 회사 또는 학교 계정 또는 개인 Microsoft 계정으로 로그인합니다.
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
.Build();
앞서 살펴본 것처럼 대화형 인증 또는 디바이스 코드 흐름을 사용하려는 경우 .WithRedirectUri
한정자를 사용합니다.
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.Build();
구성 파일 사용
다음 코드는 구성 개체에서 퍼블릭 클라이언트 애플리케이션을 인스턴스화합니다. 이 애플리케이션은 프로그래밍 방식으로 채우거나 구성 파일에서 읽을 수 있습니다.
PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
.WithDefaultRedirectUri()
.Build();
보다 정교한 구성
여러 한정자를 추가하여 애플리케이션 빌드를 정교하게 만들 수 있습니다. 예를 들어 애플리케이션을 국가별 클라우드(예: 여기에 표시된 미국 정부)의 다중 테넌트 애플리케이션으로 만들려면 다음과 같이 작성할 수 있습니다.
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
AadAuthorityAudience.AzureAdMultipleOrgs)
.Build();
MSAL.NET에는 다음과 같은 Active Directory Federation Services 2019에 대한 한정자도 포함되어 있습니다.
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAdfsAuthority("https://consoso.com/adfs")
.Build();
마지막으로, Azure AD(Azure Active Directory) B2C 테넌트에 대한 토큰을 획득하려는 경우 다음 코드 조각에 표시된 것처럼 테넌트를 지정합니다.
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
.Build();
자세한 정보
MSAL.NET 데스크톱 애플리케이션을 구성하는 방법에 대한 자세한 정보:
-
PublicClientApplicationBuilder
에서 사용할 수 있는 모든 한정자 목록은 참조 설명서 PublicClientApplicationBuilder를 참조하세요. -
PublicClientApplicationOptions
에서 제공하는 모든 옵션에 대한 설명은 참조 설명서의 PublicClientApplicationOptions를 참조하세요.
구성 옵션을 사용하는 전체 예제
다음 appsettings.json
구성 파일을 포함하는 .NET 콘솔 애플리케이션을 가정해 보겠습니다.
{
"Authentication": {
"AzureCloudInstance": "AzurePublic",
"AadAuthorityAudience": "AzureAdMultipleOrgs",
"ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"WebAPI": {
"MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
}
}
.NET 제공 구성 프레임워크를 사용하여 이 파일에서 읽을 코드가 거의 없습니다.
public class SampleConfiguration
{
/// <summary>
/// Authentication options
/// </summary>
public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }
/// <summary>
/// Base URL for Microsoft Graph (it varies depending on whether the application runs
/// in Microsoft Azure public clouds or national or sovereign clouds)
/// </summary>
public string MicrosoftGraphBaseEndpoint { get; set; }
/// <summary>
/// Reads the configuration from a JSON file
/// </summary>
/// <param name="path">Path to the configuration json file</param>
/// <returns>SampleConfiguration as read from the json file</returns>
public static SampleConfiguration ReadFromJsonFile(string path)
{
// .NET configuration
IConfigurationRoot Configuration;
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path);
Configuration = builder.Build();
// Read the auth and graph endpoint configuration
SampleConfiguration config = new SampleConfiguration()
{
PublicClientApplicationOptions = new PublicClientApplicationOptions()
};
Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
config.MicrosoftGraphBaseEndpoint =
Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
return config;
}
}
이제 애플리케이션을 만들려면 다음 코드를 작성합니다.
SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
.WithDefaultRedirectUri()
.Build();
.Build()
메서드를 호출하기 전에 앞에서 본 것처럼 .WithXXX
메서드에 대한 호출로 구성을 재정의할 수 있습니다.
다음 단계
본 시나리오의 다음 문서인 데스크톱 앱용 토큰 획득으로 이동합니다.