빠른 시작: Microsoft ID 플랫폼으로 보호되는 ASP.NET Web API 호출
다음 빠른 시작에서는 리소스에 대한 액세스를 권한 있는 계정으로만 제한하여 ASP.NET Web 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
ZIP 파일로다운로드합니다.
팁
Windows의 경로 길이 제한으로 인한 오류를 방지하려면 보관 파일을 추출하거나 리포지토리를 드라이브 루트 근처의 디렉터리에 복제하는 것이 좋습니다.
웹 API 등록(TodoListService)
Azure Portal의 앱 등록 웹 API를 등록합니다.
Microsoft Entra 관리 센터에 적어도 클라우드 애플리케이션 관리자로 로그인합니다.
여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘
사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
ID>애플리케이션>앱 등록으로 이동하여 새 등록을(를) 선택합니다.
애플리케이션의 이름 입력합니다(예:
AppModelv2-NativeClient-DotNet-TodoListService
). 앱 사용자에게 이 이름이 표시될 수 있으며 나중에 변경할 수 있습니다.지원되는 계정 유형조직 디렉터리 계정을 선택합니다.
등록 선택하여 애플리케이션을 만듭니다.
앱 개요 페이지에서 애플리케이션(클라이언트) ID 값을 찾은 다음 나중에 사용하기 위해 기록합니다. 이 프로젝트에 대한 Visual Studio 구성 파일(즉, 파일의 TodoListService\appsettings.js
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 파일을 엽니다.
Enter_the_Application_Id_here
값을ClientID
및Audience
속성 모두에서 앱 등록 포털에 등록한 애플리케이션의 클라이언트 ID(애플리케이션 ID) 값으로 바꿉니다.
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 개인 계정을 사용하여 로그인할 수 있습니다.
앱 개요 페이지에서 인증선택한 다음, 다음 단계를 완료하여 플랫폼을 추가합니다.
- 플랫폼 구성아래에서 플랫폼 추가 단추를 선택합니다.
- Mobile 및 데스크톱 애플리케이션경우 Mobile 및 데스크톱 애플리케이션선택합니다.
-
리디렉션 URI에 대한
https://login.microsoftonline.com/common/oauth2/nativeclient
확인란을 선택합니다. - 구성을 선택합니다.
API 권한을 선택한 다음 다음 단계를 완료하여 권한을 추가합니다.
- 사용 권한 추가 단추를 선택합니다.
- 내 API 탭을 선택합니다.
- API 목록에서 AppModelv2-NativeClient-DotNet-TodoListService API 또는 웹 API에 대해 입력한 이름을 선택합니다.
- 아직 선택하지 않은 경우 access_as_user 권한 확인란을 선택합니다. 필요한 경우 검색 상자를 사용합니다.
- 권한 추가 단추를 선택합니다.
프로젝트 구성
app.config 파일에 애플리케이션 ID를 추가하여 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에 액세스하도록 허용할 수 있습니다. 이렇게 하려면 클라이언트 앱의 애플리케이션 ID를 웹 API에 대한 사전 승인된 애플리케이션 목록에 추가합니다. 사전 승인된 클라이언트를 추가하면 사용자가 동의 없이 웹 API에 액세스할 수 있습니다.
- 앱 등록 포털에서 TodoListService 앱의 속성을 엽니다.
- API 노출 섹션에서 권한 있는 클라이언트 애플리케이션아래에 있는 클라이언트 애플리케이션추가를 선택합니다.
- 클라이언트 ID 상자에 TodoListClient 앱의 애플리케이션 ID를 붙여넣습니다.
-
권한 있는 범위 섹션에서
api://<Application ID>/access_as_user
Web API의 범위를 선택합니다. - 애플리케이션 에서추가를 선택합니다.
프로젝트 실행
- F5 눌러 프로젝트를 실행합니다. TodoListClient 앱이 열립니다.
- 오른쪽 위에서 로그인선택한 다음 개인 Microsoft 계정(예: live.com 또는 hotmail.com 계정, 회사 또는 학교 계정)을 사용하여 로그인합니다.
선택 사항: 특정 사용자에 대한 로그인 액세스 제한
기본적으로 outlook.com 또는 live.com 계정과 같은 개인 계정이나 Microsoft Entra ID와 통합된 조직의 회사 또는 학교 계정은 토큰을 요청하고 웹 API에 액세스할 수 있습니다.
appsettings.json 파일에서 TenantId
속성을 변경하여 애플리케이션에 로그인할 수 있는 사용자를 지정합니다.
도움말 및 지원
도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한도움말 및 지원을 참조하세요.
다음 단계
다음 자습서 시리즈에서 보호된 ASP.NET Core 웹 API를 빌드하여 자세히 알아보세요.