빠른 시작: Microsoft ID 플랫폼으로 보호되는 ASP.NET 웹 API 호출
다음 빠른 시작에서는 ASP.NET 웹 API의 리소스에 대한 액세스를 인증된 계정으로만 제한하여 보호하는 방법을 보여 주는 코드 샘플을 사용합니다. 이 샘플은 모든 Microsoft Entra 조직에서 개인 Microsoft 계정 및 계정의 권한 부여를 지원합니다.
또한 이 문서에서는 WPF(Windows Presentation Foundation) 앱을 사용하여 웹 API에 액세스하기 위해 액세스 토큰을 요청하는 방법을 보여줍니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Visual Studio 2022. 체험용 Visual Studio 다운로드
샘플 복제 또는 다운로드
코드 샘플은 다음 두 가지 방법으로 얻을 수 있습니다.
셸 또는 명령줄에서 복제합니다.
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
팁
Windows의 경로 길이 제한으로 인해 발생하는 오류를 방지하려면 보관 파일의 압축을 풀거나 리포지토리를 드라이브 루트에 가까운 디렉터리에 복제하는 것이 좋습니다.
웹 API 등록(TodoListService)
팁
이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.
Azure Portal의 앱 등록에 웹 API를 등록합니다.
최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
애플리케이션에 대한 이름을 입력합니다(예:
AppModelv2-NativeClient-DotNet-TodoListService
). 이 이름은 앱의 사용자에게 표시될 수 있으며 나중에 변경할 수 있습니다.지원되는 계정 유형에는 모든 조직 디렉터리의 계정을 선택합니다.
등록을 선택하여 애플리케이션을 만듭니다.
앱 개요 페이지에서 애플리케이션(클라이언트) ID 값을 찾은 후 나중에 사용할 수 있도록 기록합니다. 이 프로젝트의 Visual Studio 구성 파일(즉, TodoListService\appsettings.json 파일의
ClientId
)을 구성하는 데 필요합니다.관리에서 API 표시>범위 추가를 선택합니다. 저장 및 계속을 선택하여 제안된 애플리케이션 ID URI(
api://{clientId}
)를 수락한 후, 다음 정보를 입력합니다.- 범위 이름으로
access_as_user
를 입력합니다. - 동의할 수 있는 사람에 대해 관리자 및 사용자 옵션을 선택했는지 확인합니다.
- 관리자 동의 표시 이름 상자에
Access TodoListService as a user
를 입력합니다. - 관리자 동의 설명 상자에
Accesses the TodoListService web API as a user
를 입력합니다. - 사용자 동의 표시 이름 상자에
Access TodoListService as a user
를 입력합니다. - 사용자 동의 설명 상자에
Accesses the TodoListService web API as a user
를 입력합니다. - 상태는 사용으로 유지합니다.
- 범위 이름으로
범위 추가를 선택합니다.
서비스 프로젝트 구성
등록된 웹 API와 일치하도록 서비스 프로젝트를 구성합니다.
Visual Studio에서 솔루션을 연 다음, TodoListService 프로젝트의 루트 아래에서 appsettings.json 파일을 엽니다.
ClientID
속성과Audience
속성 모두에서 앱 등록 포털에 등록한 애플리케이션의 클라이언트 ID(애플리케이션 ID) 값으로Enter_the_Application_Id_here
값을 대체합니다.
app.config 파일에 새 범위 추가
TodoListClient app.config 파일에 새 범위를 추가하려면 다음 단계를 수행합니다.
TodoListClient 프로젝트 루트 폴더에서 app.config 파일을 엽니다.
TodoListService 프로젝트에 대해 방금 등록한 애플리케이션의 애플리케이션 ID를
TodoListServiceScope
매개 변수에 붙여넣고{Enter the Application ID of your TodoListService from the app registration portal}
문자열을 대체합니다.
참고 항목
애플리케이션 ID가 api://{TodoListService-Application-ID}/access_as_user
형식을 사용하는지 확인합니다. 여기서 {TodoListService-Application-ID}
는 TodoListService 앱의 애플리케이션 ID를 나타내는 GUID입니다.
웹앱 등록(TodoListClient)
Azure Portal의 앱 등록에 TodoListClient 앱을 등록한 다음, TodoListClient 프로젝트에서 코드를 구성합니다. 클라이언트와 서버가 동일한 애플리케이션으로 간주되는 경우 2단계에서 등록한 애플리케이션을 재사용할 수 있습니다. 사용자가 개인 Microsoft 계정으로 로그인하도록 하려면 동일한 애플리케이션을 사용합니다.
앱 등록
TodoListClient 앱을 등록하려면 다음 단계를 수행합니다.
최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
새 등록을 선택합니다.
애플리케이션 등록 페이지가 열리면 애플리케이션의 등록 정보를 입력합니다.
- 이름 섹션에서 앱의 사용자에게 표시되는 의미 있는 애플리케이션 이름(예: NativeClient-DotNet-TodoListClient)을 입력합니다.
- 지원되는 계정 유형에는 모든 조직 디렉터리의 계정을 선택합니다.
- 등록을 선택하여 애플리케이션을 만듭니다.
참고 항목
TodoListClient 프로젝트의 app.config 파일에서
ida:Tenant
의 기본값은common
으로 설정됩니다. 가능한 값은 다음과 같습니다.common
: 회사 또는 학교 계정이나 개인 Microsoft 계정을 사용하여 로그인할 수 있습니다(이전 단계에서 모든 조직 디렉터리의 계정을 선택했기 때문).organizations
: 회사 또는 학교 계정을 사용하여 로그인할 수 있습니다.consumers
: Microsoft 개인 계정을 사용하여 로그인할 수 있습니다.
앱 개요 페이지에서 인증을 선택한 후 다음 단계를 완료하여 플랫폼을 추가합니다.
- 플랫폼 구성에서 플랫폼 추가 단추를 선택합니다.
- 모바일 및 데스크톱 애플리케이션의 경우 모바일 및 데스크톱 애플리케이션을 선택합니다.
- 리디렉션 URI의 경우
https://login.microsoftonline.com/common/oauth2/nativeclient
확인란을 선택합니다. - 구성을 선택합니다.
API 권한을 선택한 후 다음 단계를 완료하여 권한을 추가합니다.
- 사용 권한 추가 버튼을 선택합니다.
- 내 API 탭을 선택합니다.
- API 목록에서 AppModelv2-NativeClient-DotNet-TodoListService API 또는 웹 API에 대해 입력한 이름을 선택합니다.
- access_as_user 권한 확인란을 아직 선택하지 않았으면 선택합니다. 필요한 경우 검색 상자를 사용합니다.
- 사용 권한 추가 단추를 선택합니다.
프로젝트 구성
애플리케이션 ID를 app.config 파일에 추가하여 TodoListClient 프로젝트를 구성합니다.
앱 등록 포털의 개요 페이지에서 애플리케이션(클라이언트) ID 값을 복사합니다.
TodoListClient 프로젝트 루트 폴더에서 app.config 파일을 열고
ida:ClientId
매개 변수에 애플리케이션 ID 값을 붙여넣습니다.
프로젝트를 실행합니다.
두 프로젝트를 시작합니다. Visual Studio 사용자의 경우
Visual Studio 솔루션을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
공용 속성에서 시작 프로젝트를 선택한 다음 여러 시작 프로젝트를 선택합니다.
두 프로젝트 모두 작업으로 시작을 선택합니다.
위쪽 화살표를 사용하여 목록의 첫 번째 위치로 이동하여 TodoListService 서비스가 먼저 시작되는지 확인합니다.
TodoListClient 프로젝트를 실행하려면 로그인합니다.
F5 키를 눌러 프로젝트를 시작합니다. 서비스 페이지와 데스크톱 애플리케이션이 열립니다.
TodoListClient에서 오른쪽 위에 있는 로그인을 선택한 다음, 애플리케이션을 등록하는 데 사용한 것과 동일한 자격 증명으로 로그인하거나, 동일한 디렉터리에서 사용자로 로그인합니다.
처음으로 로그인하는 경우 TodoListService 웹 API에 동의하라는 메시지가 표시될 수 있습니다.
TodoListService 웹 API에 액세스하고 할 일 목록을 조작하는 데 도움이 되도록, 로그인할 때 access_as_user 범위에 대한 액세스 토큰도 요청합니다.
클라이언트 애플리케이션 미리 인증
웹 API에 액세스할 수 있도록 클라이언트 애플리케이션에 미리 권한을 부여하여 다른 디렉터리의 사용자가 웹 API에 액세스하도록 허용할 수 있습니다. 웹 API에 대해 미리 권한이 부여된 애플리케이션 목록에 클라이언트 앱의 애플리케이션 ID를 추가하면 됩니다. 미리 권한이 부여된 클라이언트를 추가하면 사용자가 동의하지 않고도 웹 API에 액세스할 수 있습니다.
- 앱 등록 포털에서 TodoListService 앱의 속성을 엽니다.
- API 표시 섹션의 권한 있는 클라이언트 애플리케이션 아래에서 클라이언트 애플리케이션 추가를 선택합니다.
- 클라이언트 ID 상자에 TodoListClient 앱의 애플리케이션 ID를 붙여넣습니다.
- 권한 있는 범위 섹션에서
api://<Application ID>/access_as_user
웹 API의 범위를 선택합니다. - 애플리케이션 추가를 선택합니다.
프로젝트 실행
- F5 키를 눌러 프로젝트를 실행합니다. TodoListClient 앱이 열립니다.
- 오른쪽 위에서 로그인을 선택하고 개인 Microsoft 계정(예: live.com 또는 hotmail.com 계정)이나 회사 또는 학교 계정을 사용하여 로그인합니다.
선택 사항: 특정 사용자로 로그인 액세스 제한
기본적으로 outlook.com 또는 live.com 계정과 같은 개인 계정이나 Microsoft Entra ID와 통합된 조직의 회사 또는 학교 계정은 토큰을 요청하고 웹 API에 액세스할 수 있습니다.
appsettings.json 파일의 TenantId
속성을 변경하여 애플리케이션에 로그인할 수 있는 사용자를 지정합니다.
도움말 및 지원
도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한 도움말 및 지원을 참조하세요.
다음 단계
다음 자습서 시리즈에서 보호된 ASP.NET Core 웹 API를 빌드하여 자세히 알아보세요.