Share via


빠른 시작: Windows 데스크톱 애플리케이션에서 토큰 획득 및 Microsoft Graph API 호출

환영합니다! 아마도 기대했던 페이지는 아닐 것입니다. 수정 작업을 진행하는 동안 이 링크를 통해 올바른 문서로 이동해야 합니다.

빠른 시작: Windows 데스크톱 앱에서 사용자 로그인 및 Microsoft Graph 호출

이 문제를 해결하는 동안 불편을 끼쳐 드려 죄송하며 양해해 주셔서 감사합니다.

이 빠른 시작에서는 WPF(Windows Presentation Foundation) 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출할 액세스 토큰을 가져오는 방법을 보여 주는 코드 샘플을 다운로드하고 실행합니다.

자세한 내용은 샘플 작동 방식을 참조하세요.

1단계: Azure Portal에서 애플리케이션 구성

이 빠른 시작의 코드 샘플이 작동하려면 https://login.microsoftonline.com/common/oauth2/nativeclientms-appx-web://microsoft.aad.brokerplugin/{client_id}리디렉션 URI를 추가합니다.

Already configured 이러한 특성을 사용하여 애플리케이션을 구성합니다.

2단계: Visual Studio 프로젝트 다운로드

Visual Studio 2019를 사용하여 프로젝트를 실행합니다.

Windows의 경로 길이 제한으로 인해 발생하는 오류를 방지하려면 보관 파일의 압축을 풀거나 리포지토리를 드라이브 루트에 가까운 디렉터리에 복제하는 것이 좋습니다.

3단계: 앱이 구성되고 실행할 준비가 되었습니다.

앱 속성 값을 사용하여 프로젝트를 구성했고 실행할 준비가 되었습니다.

참고 항목

Enter_the_Supported_Account_Info_Here

자세한 정보

샘플 작동 방법

Shows how the sample app generated by this quickstart works

MSAL.NET

MSAL(Microsoft.Identity.Client)은 사용자를 로그인하고 Microsoft ID 플랫폼으로 보호되는 API 액세스에 사용되는 토큰을 요청할 때 사용되는 라이브러리입니다. Visual Studio의 패키지 관리자 콘솔에서 다음 명령을 실행하여 MSAL을 설치할 수 있습니다.

Install-Package Microsoft.Identity.Client -IncludePrerelease

MSAL 초기화

다음 코드를 추가하여 MSAL에 대한 참조를 추가할 수 있습니다.

using Microsoft.Identity.Client;

그런 다음, 아래 코드를 사용하여 MSAL을 초기화합니다.

IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
여기서 설명
ClientId Azure Portal에 등록된 애플리케이션의 애플리케이션(클라이언트) ID입니다. 이 값은 Azure Portal에서 앱의 개요 페이지에 있습니다.

토큰 요청

MSAL에는 토큰 가져오기에 사용되는 두 가지 메서드인 AcquireTokenInteractiveAcquireTokenSilent가 있습니다.

대화형으로 사용자 토큰 가져오기

상황에 따라 사용자가 팝업 창을 통해 Microsoft ID 플랫폼과 상호 작용하여 자격 증명의 유효성을 검사하거나 동의를 제공해야 합니다. 예는 다음과 같습니다.

  • 처음으로 사용자가 애플리케이션에 로그인한 경우
  • 암호가 만료되어 사용자가 자격 증명을 다시 입력해야 할 경우
  • 애플리케이션이 사용자 동의가 필요한 리소스에 액세스를 요청하고 있는 경우
  • 2단계 인증이 필요한 경우
authResult = await App.PublicClientApp.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
여기서 설명
_scopes 요청된 범위(예: Microsoft Graph의 경우 { "user.read" }, 사용자 지정 웹 API의 경우 { "api://<Application ID>/access_as_user" })를 포함합니다.

자동으로 사용자 토큰 가져오기

사용자가 리소스에 액세스해야 할 때마다 자격 증명의 유효성을 검사할 필요가 없도록 하려고 합니다. 대부분은 사용자 개입 없이 토큰 가져오기 및 갱신을 자동으로 처리하려고 합니다. 초기 AcquireTokenInteractive 메서드 다음에 AcquireTokenSilent 메서드를 사용하여 토큰을 가져와서 보호된 리소스에 액세스할 수 있습니다.

var accounts = await App.PublicClientApp.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await App.PublicClientApp.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
여기서 설명
scopes 요청된 범위(예: Microsoft Graph의 경우 { "user.read" }, 사용자 지정 웹 API의 경우 { "api://<Application ID>/access_as_user" })를 포함합니다.
firstAccount 캐시의 첫 번째 사용자를 지정합니다(MSAL은 단일 앱에서 여러 사용자를 지원함).

도움말 및 지원 

도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한 도움말 및 지원을 참조하세요.

다음 단계

이 빠른 시작의 전체 설명을 포함하여 애플리케이션 및 새로운 기능 빌드에 대한 완전한 단계별 가이드를 제공하는 Windows 데스크톱 자습서를 사용해 보세요.