빠른 시작: Microsoft ID 플랫폼으로 보호되는 ASP.NET 웹 API 호출

다음 빠른 시작에서는 ASP.NET 웹 API의 리소스에 대한 액세스를 인증된 계정으로만 제한하여 보호하는 방법을 보여 주는 코드 샘플을 사용합니다. 이 샘플은 모든 Microsoft Entra 조직에서 개인 Microsoft 계정 및 계정의 권한 부여를 지원합니다.

또한 이 문서에서는 WPF(Windows Presentation Foundation) 앱을 사용하여 웹 API에 액세스하기 위해 액세스 토큰을 요청하는 방법을 보여줍니다.

필수 조건

샘플 복제 또는 다운로드

코드 샘플은 다음 두 가지 방법으로 얻을 수 있습니다.

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

웹 API 등록(TodoListService)

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

Azure Portal의 앱 등록에 웹 API를 등록합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.

  3. ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.

  4. 애플리케이션에 대한 이름을 입력합니다(예: AppModelv2-NativeClient-DotNet-TodoListService). 이 이름은 앱의 사용자에게 표시될 수 있으며 나중에 변경할 수 있습니다.

  5. 지원되는 계정 유형에는 모든 조직 디렉터리의 계정을 선택합니다.

  6. 등록을 선택하여 애플리케이션을 만듭니다.

  7. 개요 페이지에서 애플리케이션(클라이언트) ID 값을 찾은 후 나중에 사용할 수 있도록 기록합니다. 이 프로젝트의 Visual Studio 구성 파일(즉, TodoListService\appsettings.json 파일의 ClientId)을 구성하는 데 필요합니다.

  8. 관리에서 API 표시>범위 추가를 선택합니다. 저장 및 계속을 선택하여 제안된 애플리케이션 ID URI(api://{clientId})를 수락한 후, 다음 정보를 입력합니다.

    1. 범위 이름으로 access_as_user를 입력합니다.
    2. 동의할 수 있는 사람에 대해 관리자 및 사용자 옵션을 선택했는지 확인합니다.
    3. 관리자 동의 표시 이름 상자에 Access TodoListService as a user를 입력합니다.
    4. 관리자 동의 설명 상자에 Accesses the TodoListService web API as a user를 입력합니다.
    5. 사용자 동의 표시 이름 상자에 Access TodoListService as a user를 입력합니다.
    6. 사용자 동의 설명 상자에 Accesses the TodoListService web API as a user를 입력합니다.
    7. 상태사용으로 유지합니다.
  9. 범위 추가를 선택합니다.

서비스 프로젝트 구성

등록된 웹 API와 일치하도록 서비스 프로젝트를 구성합니다.

  1. Visual Studio에서 솔루션을 연 다음, TodoListService 프로젝트의 루트 아래에서 appsettings.json 파일을 엽니다.

  2. ClientID 속성과 Audience 속성 모두에서 앱 등록 포털에 등록한 애플리케이션의 클라이언트 ID(애플리케이션 ID) 값으로 Enter_the_Application_Id_here 값을 대체합니다.

app.config 파일에 새 범위 추가

TodoListClient app.config 파일에 새 범위를 추가하려면 다음 단계를 수행합니다.

  1. TodoListClient 프로젝트 루트 폴더에서 app.config 파일을 엽니다.

  2. 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 앱을 등록하려면 다음 단계를 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.

  3. 새 등록을 선택합니다.

  4. 애플리케이션 등록 페이지가 열리면 애플리케이션의 등록 정보를 입력합니다.

    1. 이름 섹션에서 앱의 사용자에게 표시되는 의미 있는 애플리케이션 이름(예: NativeClient-DotNet-TodoListClient)을 입력합니다.
    2. 지원되는 계정 유형에는 모든 조직 디렉터리의 계정을 선택합니다.
    3. 등록을 선택하여 애플리케이션을 만듭니다.

    참고 항목

    TodoListClient 프로젝트의 app.config 파일에서 ida:Tenant의 기본값은 common으로 설정됩니다. 가능한 값은 다음과 같습니다.

    • common: 회사 또는 학교 계정이나 개인 Microsoft 계정을 사용하여 로그인할 수 있습니다(이전 단계에서 모든 조직 디렉터리의 계정을 선택했기 때문).
    • organizations: 회사 또는 학교 계정을 사용하여 로그인할 수 있습니다.
    • consumers: Microsoft 개인 계정을 사용하여 로그인할 수 있습니다.
  5. 개요 페이지에서 인증을 선택한 후 다음 단계를 완료하여 플랫폼을 추가합니다.

    1. 플랫폼 구성에서 플랫폼 추가 단추를 선택합니다.
    2. 모바일 및 데스크톱 애플리케이션의 경우 모바일 및 데스크톱 애플리케이션을 선택합니다.
    3. 리디렉션 URI의 경우 https://login.microsoftonline.com/common/oauth2/nativeclient 확인란을 선택합니다.
    4. 구성을 선택합니다.
  6. API 권한을 선택한 후 다음 단계를 완료하여 권한을 추가합니다.

    1. 사용 권한 추가 버튼을 선택합니다.
    2. 내 API 탭을 선택합니다.
    3. API 목록에서 AppModelv2-NativeClient-DotNet-TodoListService API 또는 웹 API에 대해 입력한 이름을 선택합니다.
    4. access_as_user 권한 확인란을 아직 선택하지 않았으면 선택합니다. 필요한 경우 검색 상자를 사용합니다.
    5. 사용 권한 추가 단추를 선택합니다.

프로젝트 구성

애플리케이션 ID를 app.config 파일에 추가하여 TodoListClient 프로젝트를 구성합니다.

  1. 앱 등록 포털의 개요 페이지에서 애플리케이션(클라이언트) ID 값을 복사합니다.

  2. TodoListClient 프로젝트 루트 폴더에서 app.config 파일을 열고 ida:ClientId 매개 변수에 애플리케이션 ID 값을 붙여넣습니다.

프로젝트를 실행합니다.

두 프로젝트를 시작합니다. Visual Studio 사용자의 경우

  1. Visual Studio 솔루션을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  2. 공용 속성에서 시작 프로젝트를 선택한 다음 여러 시작 프로젝트를 선택합니다.

  3. 두 프로젝트 모두 작업으로 시작을 선택합니다.

  4. 위쪽 화살표를 사용하여 목록의 첫 번째 위치로 이동하여 TodoListService 서비스가 먼저 시작되는지 확인합니다.

TodoListClient 프로젝트를 실행하려면 로그인합니다.

  1. F5 키를 눌러 프로젝트를 시작합니다. 서비스 페이지와 데스크톱 애플리케이션이 열립니다.

  2. TodoListClient에서 오른쪽 위에 있는 로그인을 선택한 다음, 애플리케이션을 등록하는 데 사용한 것과 동일한 자격 증명으로 로그인하거나, 동일한 디렉터리에서 사용자로 로그인합니다.

    처음으로 로그인하는 경우 TodoListService 웹 API에 동의하라는 메시지가 표시될 수 있습니다.

    TodoListService 웹 API에 액세스하고 할 일 목록을 조작하는 데 도움이 되도록, 로그인할 때 access_as_user 범위에 대한 액세스 토큰도 요청합니다.

클라이언트 애플리케이션 미리 인증

웹 API에 액세스할 수 있도록 클라이언트 애플리케이션에 미리 권한을 부여하여 다른 디렉터리의 사용자가 웹 API에 액세스하도록 허용할 수 있습니다. 웹 API에 대해 미리 권한이 부여된 애플리케이션 목록에 클라이언트 앱의 애플리케이션 ID를 추가하면 됩니다. 미리 권한이 부여된 클라이언트를 추가하면 사용자가 동의하지 않고도 웹 API에 액세스할 수 있습니다.

  1. 앱 등록 포털에서 TodoListService 앱의 속성을 엽니다.
  2. API 표시 섹션의 권한 있는 클라이언트 애플리케이션 아래에서 클라이언트 애플리케이션 추가를 선택합니다.
  3. 클라이언트 ID 상자에 TodoListClient 앱의 애플리케이션 ID를 붙여넣습니다.
  4. 권한 있는 범위 섹션에서 api://<Application ID>/access_as_user 웹 API의 범위를 선택합니다.
  5. 애플리케이션 추가를 선택합니다.

프로젝트 실행

  1. F5 키를 눌러 프로젝트를 실행합니다. TodoListClient 앱이 열립니다.
  2. 오른쪽 위에서 로그인을 선택하고 개인 Microsoft 계정(예: live.com 또는 hotmail.com 계정)이나 회사 또는 학교 계정을 사용하여 로그인합니다.

선택 사항: 특정 사용자로 로그인 액세스 제한

기본적으로 outlook.com 또는 live.com 계정과 같은 개인 계정이나 Microsoft Entra ID와 통합된 조직의 회사 또는 학교 계정은 토큰을 요청하고 웹 API에 액세스할 수 있습니다.

appsettings.json 파일의 TenantId 속성을 변경하여 애플리케이션에 로그인할 수 있는 사용자를 지정합니다.

도움말 및 지원 

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

다음 단계

다음 자습서 시리즈에서 보호된 ASP.NET Core 웹 API를 빌드하여 자세히 알아보세요.