웹 API를 호출하는 데스크톱 앱: 코드 구성
이제 애플리케이션을 만들었으므로 애플리케이션 좌표를 사용하여 코드를 구성하는 방법을 알아봅니다.
데스크톱 앱을 지원하는 Microsoft 라이브러리
다음 Microsoft 라이브러리는 데스크톱 앱을 지원합니다.
언어 / 프레임워크 | 프로젝트 설정 GitHub |
Package(패키지) | 가져오기 시작됨 |
사용자 로그인 | 웹 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 | 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
메서드에 대한 호출로 구성을 재정의할 수 있습니다.
다음 단계
본 시나리오의 다음 문서인 데스크톱 앱용 토큰 획득으로 이동합니다.