빠른 시작: 콘솔 앱의 ID를 사용하여 토큰 가져오기 및 Microsoft Graph API 호출
환영합니다! 아마도 기대했던 페이지는 아닐 것입니다. 수정 작업을 진행하는 동안 이 링크를 통해 올바른 문서로 이동해야 합니다.
이 문제를 해결하는 동안 불편을 끼쳐 드려 죄송하며 양해해 주셔서 감사합니다.
다음 빠른 시작에서는 코드 샘플을 사용하여 .NET Core 콘솔 애플리케이션이 액세스 토큰을 가져와서 Microsoft Graph API 호출하고 디렉터리에 사용자 목록을 표시하는 방법을 보여 줍니다. 또한 사용자 ID 대신 애플리케이션 ID를 사용하여 작업 또는 Windows 서비스를 실행하는 방법을 보여 줍니다. 이 빠른 시작의 샘플 콘솔 애플리케이션도 디먼 애플리케이션이므로 기밀 클라이언트 애플리케이션입니다.
사전 요구 사항
이 빠른 시작에는 .NET Core 6.0 SDK가 필요합니다.
빠른 시작 앱 다운로드 및 구성
1단계: Azure Portal에서 애플리케이션 구성
이 빠른 시작의 코드 샘플이 작동하려면 클라이언트 암호를 만들고 Graph API의 User.Read.All 애플리케이션 권한을 추가합니다.
이러한 특성을 사용하여 애플리케이션을 구성합니다.
2단계: Visual Studio 프로젝트 다운로드
Visual Studio 2022를 사용하여 프로젝트를 실행합니다.
팁
Windows의 경로 길이 제한으로 인해 발생하는 오류를 방지하려면 보관 파일의 압축을 풀거나 리포지토리를 드라이브 루트에 가까운 디렉터리에 복제하는 것이 좋습니다.
참고
Enter_the_Supported_Account_Info_Here
3단계: 관리자 동의
이제 애플리케이션을 실행하면 출력 HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation
이 생성됩니다. 이 오류는 앱 전용 권한을 사용하려면 디렉터리의 전역 관리자가 애플리케이션에 동의해야 하기 때문에 발생합니다. 역할에 따라 다음 옵션 중 하나를 선택합니다.
글로벌 테넌트 관리자
전역 테넌트 관리자의 경우 API 권한 페이지로 이동하여 Enter_the_Tenant_Name_Here 대한 관리자 동의 부여를 선택합니다.
표준 사용자
테넌트 표준 사용자의 경우 전역 관리자에게 애플리케이션에 대한 관리자 동의를 부여하도록 요청합니다. 이렇게 하려면 관리자에게 다음 URL을 제공합니다.
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
위의 URL을 사용하여 앱에 동의한 후에 오류가 AADSTS50011: No reply address is registered for the application
표시될 수 있습니다. 이 오류는 애플리케이션과 URL에 리디렉션 URI가 없기 때문에 발생합니다. 이 메시지는 무시하고,
4단계: 애플리케이션 실행
Visual Studio에서 F5 키를 눌러 애플리케이션을 실행합니다. 그렇지 않으면 명령 프롬프트, 콘솔 또는 터미널을 통해 애플리케이션을 실행합니다.
cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run
이 코드의 경우 다음과 같습니다.
{ProjectFolder}
는 .zip 파일의 압축을 푼 폴더입니다. 예제는C:\Azure-Samples\active-directory-dotnetcore-daemon-v2
입니다.
결과적으로 Azure Active Directory의 사용자 목록이 표시되어야 합니다.
이 빠른 시작 애플리케이션에서는 클라이언트 암호를 사용하여 자체를 기밀 클라이언트로 식별합니다. 클라이언트 암호는 프로젝트 파일에 일반 텍스트 파일로 추가됩니다. 보안상의 이유로 애플리케이션을 프로덕션 애플리케이션으로 고려하기 전에 클라이언트 암호 대신 인증서를 사용하는 것이 좋습니다. 인증서를 사용하는 방법에 대한 자세한 내용은 다음 지침을 참조하세요.
자세한 정보
이 섹션에서는 로그인 사용자에 필요한 코드에 대한 개요를 제공합니다. 이 개요는 > 코드의 작동 방식, 기본 인수의 개념 및 로그인을 기존 .NET Core 애플리케이션에 추가하는 방법을 이해하는 데 도움이 됩니다.
샘플 작동 방법

MSAL.NET
Microsoft 인증 라이브러리(Microsoft.Identity.Client 패키지의 MSAL)는 사용자를 로그인하고 Microsoft ID 플랫폼으로 보호되는 API에 액세스하기 위한 토큰을 요청하는 데 사용되는 라이브러리입니다. 이 빠른 시작에서는 위임된 권한 대신 애플리케이션 소유의 ID를 사용하여 토큰을 요청합니다. 이 예제의 인증 흐름을 클라이언트 자격 증명 OAuth 흐름이라고 합니다. 클라이언트 자격 증명 흐름과 함께 MSAL.NET을 사용하는 방법에 대한 자세한 내용은 이 문서를 참조하세요.
visual Studio 패키지 관리자 콘솔에서 다음 명령을 실행하여 MSAL.NET 설치할 수 있습니다.
dotnet add package Microsoft.Identity.Client
MSAL 초기화
다음 코드를 추가하여 MSAL에 대한 참조를 추가합니다.
using Microsoft.Identity.Client;
그런 다음, 다음을 사용하여 MSAL을 초기화합니다.
IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create(config.ClientId)
.WithClientSecret(config.ClientSecret)
.WithAuthority(new Uri(config.Authority))
.Build();
요소 | 설명 |
---|---|
config.ClientSecret |
Azure Portal에서 애플리케이션에 대해 생성된 클라이언트 암호입니다. |
config.ClientId |
Azure Portal에 등록된 애플리케이션의 애플리케이션(클라이언트) ID입니다. 이 값은 Azure Portal 앱의 개요 페이지에서 찾을 수 있습니다. |
config.Authority |
(선택 사항) 사용자가 인증하는 STS(보안 토큰 서비스) 엔드포인트입니다. 일반적으로 https://login.microsoftonline.com/{tenant} 퍼블릭 클라우드의 경우입니다. 여기서 {tenant} 은 테넌트의 이름 또는 테넌트 ID입니다. |
자세한 내용은 ConfidentialClientApplication
참조 설명서에서 확인할 수 있습니다.
토큰 요청
앱의 ID를 사용하여 토큰을 요청하려면 AcquireTokenForClient
메서드를 사용합니다.
result = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
요소 | 설명 |
---|---|
scopes |
요청된 범위를 포함합니다. 기밀 클라이언트의 경우 이 값은 {Application ID URI}/.default 와 비슷한 형식을 사용해야 합니다. 이 형식은 요청된 범위가 Azure Portal에서 설정한 앱 개체에서 정적으로 정의된 범위임을 나타냅니다. Microsoft Graph에서 {Application ID URI} 는 https://graph.microsoft.com 을 가리킵니다. 사용자 지정 웹 API의 경우 {Application ID URI} 는 Azure Portal의 애플리케이션 등록(미리 보기)>API 노출에서 정의합니다. |
자세한 내용은 AcquireTokenForClient
참조 설명서에서 확인할 수 있습니다.
도움말 및 지원
도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한 도움말 및 지원을 참조하세요.
다음 단계
디먼 애플리케이션에 대해 자세히 알아보려면 시나리오 개요를 참조하세요.