다음을 통해 공유


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

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

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

필수 구성 요소

샘플 복제 또는 다운로드

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

  • 셸 또는 명령줄에서 복제하십시오.

    git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
    
  • ZIP 파일로다운로드합니다.

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.jsClientId)을 구성하는 데 필요합니다.

  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. Enter_the_Application_Id_here 값을 ClientIDAudience 속성 모두에서 앱 등록 포털에 등록한 애플리케이션의 클라이언트 ID(애플리케이션 ID) 값으로 바꿉니다.

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. Mobile 및 데스크톱 애플리케이션경우 Mobile 및 데스크톱 애플리케이션선택합니다.
    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. 권한 추가 단추를 선택합니다.

프로젝트 구성

app.config 파일에 애플리케이션 ID를 추가하여 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에 액세스하도록 허용할 수 있습니다. 이렇게 하려면 클라이언트 앱의 애플리케이션 ID를 웹 API에 대한 사전 승인된 애플리케이션 목록에 추가합니다. 사전 승인된 클라이언트를 추가하면 사용자가 동의 없이 웹 API에 액세스할 수 있습니다.

  1. 앱 등록 포털에서 TodoListService 앱의 속성을 엽니다.
  2. API 노출 섹션에서 권한 있는 클라이언트 애플리케이션아래에 있는 클라이언트 애플리케이션추가를 선택합니다.
  3. 클라이언트 ID 상자에 TodoListClient 앱의 애플리케이션 ID를 붙여넣습니다.
  4. 권한 있는 범위 섹션에서 api://<Application ID>/access_as_user Web 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를 빌드하여 자세히 알아보세요.