빠른 시작: Windows 데스크톱 애플리케이션에서 토큰 획득 및 Microsoft Graph API 호출
환영합니다! 아마도 기대했던 페이지는 아닐 것입니다. 수정 작업을 진행하는 동안 이 링크를 통해 올바른 문서로 이동해야 합니다.
이 문제를 해결하는 동안 불편을 끼쳐 드려 죄송하며 양해해 주셔서 감사합니다.
이 빠른 시작에서는 WPF(Windows Presentation Foundation) 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출할 액세스 토큰을 가져오는 방법을 보여 주는 코드 샘플을 다운로드하고 실행합니다.
자세한 내용은 샘플 작동 방식을 참조하세요.
1단계: Azure Portal에서 애플리케이션 구성
이 빠른 시작의 코드 샘플이 작동하려면 https://login.microsoftonline.com/common/oauth2/nativeclient
및 ms-appx-web://microsoft.aad.brokerplugin/{client_id}
의 리디렉션 URI를 추가합니다.
이러한 특성을 사용하여 애플리케이션을 구성합니다.
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에는 토큰 가져오기에 사용되는 두 가지 메서드인 AcquireTokenInteractive
및 AcquireTokenSilent
가 있습니다.
대화형으로 사용자 토큰 가져오기
상황에 따라 사용자가 팝업 창을 통해 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 데스크톱 자습서를 사용해 보세요.