빠른 시작: 유니버설 Windows 플랫폼 앱에서 사용자 로그인 및 Microsoft Graph 호출

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

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

필수 조건

빠른 시작 앱 등록 및 다운로드

빠른 시작 애플리케이션을 시작하는 옵션은 두 가지가 있습니다.

옵션 1: 앱을 등록하고 자동 구성한 다음, 코드 샘플 다운로드

  1. AMicrosoft Entra 관리 센터 - 앱 등록빠른 시작 환경으로 이동합니다.
  2. 애플리케이션 이름을 입력하고 등록을 선택합니다.
  3. 지침에 따라 새 애플리케이션을 다운로드하고 자동으로 구성합니다.

옵션 2: 애플리케이션 및 코드 샘플을 등록하고 수동으로 구성

1단계: 애플리케이션 등록

이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.

애플리케이션을 등록하고 앱의 등록 정보를 솔루션에 추가하려면 다음 단계를 따르세요.

  1. Microsoft Entra 관리 센터에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
  3. ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
  4. 애플리케이션에 대한 이름을 입력합니다(예: UWP-App-calling-MsGraph). 이 이름은 앱의 사용자에게 표시될 수 있으며 나중에 변경할 수 있습니다.
  5. 지원되는 계정 유형 섹션에서 모든 조직 디렉터리의 계정 및 개인 Microsoft 계정(예: Skype, Xbox, Outlook.com)을 선택합니다.
  6. 등록을 선택하여 애플리케이션을 만든 다음, 이후 단계에서 사용할 수 있도록 애플리케이션(클라이언트) ID를 기록합니다.
  7. 관리에서 인증을 선택합니다.
  8. 플랫폼 추가>모바일 및 데스크톱 애플리케이션을 차례로 선택합니다.
  9. 리디렉션 URI 아래에서 https://login.microsoftonline.com/common/oauth2/nativeclient를 선택합니다.
  10. 구성을 선택합니다.

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

UWP 샘플 애플리케이션 다운로드

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

3단계: 프로젝트 구성

  1. .zip 보관 파일을 드라이브 루트에 가까운 로컬 폴더에 추출합니다. 예를 들어 C:\Azure-Samples입니다.

  2. Visual Studio에서 프로젝트를 엽니다. 메시지가 표시되면 유니버설 Windows 플랫폼 개발 워크로드 및 개별 SDK 구성 요소를 설치합니다.

  3. MainPage.Xaml.cs에서 ClientId 변수의 값을 이전에 등록한 애플리케이션의 애플리케이션(클라이언트) ID로 변경합니다.

    private const string ClientId = "Enter_the_Application_Id_here";
    

    Microsoft Entra 관리 센터(ID>애플리케이션>앱 등록>{앱 등록})에서 앱의 개요 창에서 애플리케이션(클라이언트) ID를 찾을 수 있습니다.

  4. 패키지에 대한 새 자체 서명된 테스트 인증서를 만든 다음, 이를 선택합니다.

    1. 솔루션 탐색기에서 Package.appxmanifest 파일을 두 번 클릭합니다.
    2. 패키징>인증서 선택...>만들기...를 차례로 선택합니다.
    3. 암호를 입력한 다음, 확인을 선택합니다. Native_UWP_V2_TemporaryKey.pfx라는 인증서가 만들어집니다.
    4. 확인을 선택하여 인증서 선택 대화 상자를 해제한 다음, 솔루션 탐색기에 Native_UWP_V2_TemporaryKey.pfx가 표시되는지 확인합니다.
    5. 솔루션 탐색기에서 마우스 오른쪽 단추로 Native_UWP_V2 프로젝트를 클릭하고, 속성을 선택합니다.
    6. 서명을 선택한 다음, 강력한 이름 키 파일 선택 드롭다운에서 만든 .pfx를 선택합니다.

4단계: 애플리케이션 실행

로컬 컴퓨터에서 샘플 애플리케이션을 실행합니다.

  1. Visual Studio 도구 모음에서 올바른 플랫폼을 선택합니다(ARM이 아닌 x64 또는 x86). 대상 디바이스가 디바이스에서 로컬 컴퓨터로 변경됩니다.

  2. 디버그>디버그하지 않고 시작을 선택합니다.

    이 작업을 수행하라는 메시지가 표시되면 먼저 개발자 모드를 사용하도록 설정한 다음, 디버그하지 않고 시작을 다시 사용하도록 설정해야 할 수 있습니다.

앱 창이 표시되면 Microsoft Graph API 호출 단추를 선택하고, 자격 증명을 입력하고, 애플리케이션에서 요청한 권한에 동의할 수 있습니다. 성공하면 애플리케이션에서 Microsoft Graph API에 대한 호출에서 가져온 일부 토큰 정보 및 데이터를 표시합니다.

샘플 작동 방법

Diagram showing 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

MSAL 초기화

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

using Microsoft.Identity.Client;

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

public static IPublicClientApplication PublicClientApp;
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                                                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                                                    .Build();

ClientId 값은 Microsoft Entra 관리 센터에 등록한 앱의 애플리케이션(클라이언트) ID입니다. 이 값은 Microsoft Entra 관리 센터의 앱 개요 페이지에서 찾을 수 있습니다.

토큰 요청

MSAL에는 UWP 앱에서 토큰 획득을 위한 두 가지 메서드인 AcquireTokenInteractiveAcquireTokenSilent가 있습니다.

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

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

  • 사용자가 애플리케이션에 처음으로 로그인하는 경우
  • 암호가 만료되어 사용자가 자격 증명을 다시 입력해야 할 경우
  • 애플리케이션이 사용자 동의가 필요한 리소스에 액세스를 요청하고 있는 경우
  • 2단계 인증이 필요한 경우
authResult = await PublicClientApp.AcquireTokenInteractive(scopes)
                      .ExecuteAsync();

scopes 매개 변수에는 요청된 범위(예: Microsoft Graph의 경우 { "user.read" } 또는 사용자 지정 웹 API의 경우 { "api://<Application ID>/access_as_user" })가 포함됩니다.

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

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

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

도움말 및 지원 

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

다음 단계

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