다음을 통해 공유


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

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

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

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

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

예제가 작동하는 방식을 보여주는 그림은 을 참조하세요.

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

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

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

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

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

팁 (조언)

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

3단계: 앱이 구성되고 실행할 준비가 됨

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

비고

Enter_the_Supported_Account_Info_Here

추가 정보

샘플 작동 방식

이 빠른 시작에서 생성된 샘플 앱의 작동 방식 표시

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" })를 포함합니다.

조용히 사용자 토큰 가져오기

사용자가 리소스에 액세스해야 할 때마다 자격 증명의 유효성을 검사하도록 요구하지 않습니다. 대부분의 경우 사용자 상호 작용 없이 토큰 획득 및 갱신을 원합니다. 이 메서드를 AcquireTokenSilent 사용하여 토큰을 가져와 초기 AcquireTokenInteractive 메서드 이후 보호된 리소스에 액세스할 수 있습니다.

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 데스크톱 자습서를 사용해 보세요.