다음을 통해 공유


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

적용: 흰색 확인 표시 기호가 있는 녹색 원 . Workforce 테넌트는 회색 X 기호가 있는 흰색 원을 . 외부 테넌트(자세한알아보기)

이 빠른 시작에서는 샘플 웹앱을 사용하여 Microsoft ID 플랫폼을 사용하여 ASP.NET Web API를 보호하는 방법을 보여줍니다. 이 샘플에서는 msAL(Microsoft 인증 라이브러리) 사용하여 인증을 처리합니다.

필수 구성 요소

  • 활성 구독이 있는 Azure 계정입니다. 무료계정을 만듭니다.
  • Visual Studio 2022. 무료로 Visual Studio를다운로드합니다.

웹 API 애플리케이션 등록

등록을 완료하려면 애플리케이션에 이름을 제공하고 지원되는 계정 유형을 지정합니다. 등록되면 애플리케이션 개요 페이지에 애플리케이션 소스 코드에 필요한 식별자가 표시됩니다.

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

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

  3. 정체성>애플리케이션>애플리케이션 등록으로 이동합니다.

  4. 새 등록선택합니다.

  5. NewWebAPI1같은 애플리케이션의 이름 입력합니다.

  6. 지원되는 계정 유형경우 이 조직 디렉터리에서 계정만선택합니다. 다양한 계정 유형에 대한 정보를 보려면 선택을 도와주세요 옵션을 선택하세요.

  7. 등록선택합니다.

    이름을 입력하고 계정 유형을 선택하는 방법을 보여 주는 스크린샷

  8. 등록이 완료되면 애플리케이션의 개요 창이 표시됩니다. 애플리케이션 소스 코드에서 사용할 디렉터리(테넌트) ID애플리케이션(클라이언트) ID 기록합니다.

    개요 페이지의 식별자 값을 보여 주는 스크린샷

메모

지원되는 계정 유형은 애플리케이션 지원하는 계정 수정참조하여 변경할 수 있습니다.

API를 공개하다

API가 등록되면 API가 클라이언트 애플리케이션에 노출하는 범위를 정의하여 해당 권한을 구성할 수 있습니다. 클라이언트 애플리케이션은 보호된 웹 API에 해당 요청과 함께 액세스 토큰을 전달하여 작업을 수행할 수 있는 권한을 요청합니다. 그러면 웹 API는 수신하는 액세스 토큰에 필요한 범위가 포함된 경우에만 요청된 작업을 수행합니다.

  1. 관리아래에서 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. 상태에서 활성화된 상태로유지합니다.
  2. 범위 추가를 선택합니다.

샘플 애플리케이션 복제 또는 다운로드

샘플 애플리케이션을 가져오려면 GitHub에서 복제하거나 .zip 파일로 다운로드할 수 있습니다.

git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git

Windows의 경로 길이 제한으로 인한 오류를 방지하려면 보관 파일을 추출하거나 리포지토리를 드라이브 루트 근처의 디렉터리에 복제하는 것이 좋습니다.

샘플 애플리케이션 구성

등록된 웹 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를 빌드하여 자세히 알아보세요.