다음을 통해 공유


시나리오: Web API를 호출하는 네이티브 앱

적용 대상: Windows Server 2022, Windows Server 2019, AD FS 2019 이상

AD FS 2019에서 인증된 네이티브 앱 로그인 사용자를 빌드하고 MSAL 라이브러리를 사용하여 웹 API를 호출하는 토큰을 획득하는 방법을 알아봅니다.

이 문서를 읽기 전에 AD FS 개념권한 부여 코드 부여 흐름에 대해 잘 알고 있어야 합니다.

개요

개요

이 흐름에서는 네이티브 앱(공용 클라이언트)에 인증을 추가하므로 사용자를 로그인하여 Web API를 호출할 수 있습니다. 사용자를 로그인하는 네이티브 앱에서 Web API를 호출하려면 MSAL의 AcquireTokenInteractive 토큰 획득 방법을 사용할 수 있습니다. 이 상호 작용을 사용하도록 설정하기 위해 MSAL이 웹 브라우저를 활용합니다.

AD FS에서 액세스 토큰을 대화형으로 획득하도록 네이티브 앱을 구성하는 방법을 더 잘 이해하려면 여기에서 사용할 수 있는 샘플을 사용하고 앱 등록 및 코드 구성 단계를 연습해 보겠습니다.

필수 구성 요소

  • GitHub 클라이언트 도구
  • AD FS 2019 이상 구성 및 실행
  • Visual Studio 2013 이상

AD FS에 앱 등록

이 섹션은 네이티브 앱을 공용 클라이언트로 등록하고 Web API를 AD FS에서 신뢰 당사자(RP)로 등록하는 방법을 설명합니다.

  1. AD FS 관리에서 애플리케이션 그룹을 마우스 오른쪽 단추로 클릭하 고 애플리케이션 그룹 추가를 선택합니다.

  2. 애플리케이션 그룹 마법사에서 이름으로 NativeAppToWebApi를 입력하고 클라이언트-서버 애플리케이션에서 웹 애플리케이션에 액세스하는 기본 애플리케이션 템플릿을 선택합니다. 다음을 클릭합니다.

    네이티브 애플리케이션이 웹 API 템플릿에 액세스하는 것을 강조표시한 애플리케이션 그룹 추가 마법사의 시작 페이지 스크린샷.

  3. 복사는 클라이언트 식별자 값입니다. 이것은 나중에 애플리케이션의 App.config 파일에서 ClientId의 값으로 사용됩니다. 리디렉션 URIhttps://ToDoListClient.에 대해 다음을 입력합니다. 추가를 클릭합니다. 다음을 클릭합니다.

    리디렉션 U R I를 보여주는 애플리케이션 그룹 추가 마법사의 네이티브 애플리케이션 페이지의 스크린샷.

  4. 웹 API 구성 화면에서 식별자:https://localhost:44321/.를 입력 추가를 클릭합니다. 다음을 클릭합니다. 이 값은 나중에 애플리케이션의 App.configWeb.config 파일에서 사용됩니다.

    올바른 식별자를 보여주는 애플리케이션 그룹 추가 마법사의 Web API 구성 페이지의 스크린샷.

  5. 액세스 제어 정책 적용 화면에서 모든 사람 허용을 선택하고 다음을 클릭합니다.

    모든 사용자 허용 옵션이 강조 표시된 애플리케이션 그룹 추가 마법사의 액세스 제어 정책 선택 페이지 스크린샷.

  6. 애플리케이션 권한 구성 화면에서 openid가 선택되어 있는지 확인하고 다음을 클릭합니다.

    선택한 열린 I D를 보여주는 애플리케이션 그룹 추가 마법사의 애플리케이션 사용 권한 구성 페이지 스크린샷.

  7. 요약 화면에서 다음을 클릭합니다.

  8. 완료 화면에서 닫기를 클릭합니다.

  9. AD FS 관리에서, 애플리케이션 그룹을 클릭하고 NativeAppToWebApi 애플리케이션 그룹을 선택합니다. 마우스 오른쪽 단추를 클릭하고 속성을 선택합니다.

    강조 표시된 NativeAppToWebApi 그룹과 드롭다운 목록의 속성 옵션을 보여주는 A D F S 관리 대화 상자의 스크린샷.

  10. NativeAppToWebApi 속성 화면에서 Web APINativeAppToWebApi – Web API를 선택하고 편집…을 클릭

    NativeAppToWebApi - 웹 A P I 애플리케이션이 강조 표시된 NativeAppToWebApi 속성 대화 상자의 스크린샷.

  11. NativeAppToWebApi – Web API 속성 화면에서 발급 변환 규칙 탭을 선택하고 규칙 추가…를 클릭합니다.

    발급 변환 규칙 탭을 보여주는 NativeAppToWebApi - Web A P I 속성 대화 상자의 스크린샷.

  12. 클레임 규칙 추가 마법사의 클레임 규칙 템플릿: 드롭다운에서 들어오는 클레임 변환을 선택하고 다음을 클릭합니다.

    선택한 들어오는 클레임 변환 옵션을 보여주는 변환 클레임 규칙 추가 마법사의 규칙 템플릿 선택 페이지의 스크린샷.

  13. NameIDClaim rule name: 필드에 입력합니다. 들어오는 클레임 유형:에 대해 이름을, 나가는 클레임 유형:에 대해 이름 ID를, 나가는 이름 ID 형식:에 대해 공통 이름을 선택합니다. 마침을 클릭합니다.

    위에서 설명한 구성을 보여주는 변환 클레임 규칙 추가 마법사의 규칙 구성 페이지의 스크린샷.

  14. NativeAppToWebApi – Web API 속성 화면에서 확인을 클릭하고 NativeAppToWebApi 속성 화면을 클릭합니다.

코드 구성

이 섹션은 사용자를 로그인하도록 네이티브 앱을 구성하고 Web API를 호출하기 위한 토큰을 검색하는 방법을 설명합니다.

  1. 여기에서 샘플 다운로드

  2. Visual Studio를 사용하여 샘플 열기

  3. App.config 파일을 엽니다. 다음을 수정합니다.

    • ida:Authority - h 입력ttps://[your AD FS hostname]/adfs

    • ida:ClientId - 위의 AD FS 섹션에 있는 앱 등록에서 #3의 클라이언트 식별자 값을 입력합니다.

    • ida:RedirectUri - 위의 AD FS 섹션에서 앱 등록의 #3에서 Redirect URI 값을 입력합니다.

    • todo:TodoListResourceId – 위의 AD FS 섹션에서 앱 등록에서 #4의 식별자 값 입력

    • ida: todo:TodoListBaseAddress - 위의 AD FS 섹션에서 앱 등록에서 #4의 식별자 값을 입력합니다.

      수정된 값을 보여주는 앱 구성 파일의 스크린샷.

  4. Web.config 파일을 엽니다. 다음을 수정합니다.

    • ida:Audience - 위의 AD FS 섹션에서 앱 등록에서 #4의 식별자 값을 입력합니다.

    • ida: AdfsMetadataEndpoint - https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml 입력

      수정된 값을 보여주는 웹 구성 파일의 스크린샷.

샘플 테스트

이 섹션은 위에서 구성한 샘플을 테스트하는 방법을 보여줍니다.

  1. 코드가 변경되면 솔루션을 다시 빌드

  2. Visual Studio에서 솔루션을 마우스 오른쪽 단추로 클릭하고 시작 프로젝트 설정... 선택

    프로젝트 시작 설정 옵션이 강조 표시된 솔루션을 마우스 오른쪽 단추로 클릭할 때 표시되는 목록의 스크린샷.

  3. 속성 페이지에서 각 프로젝트에 대해 작업시작으로 설정되어 있는지 확인합니다.

    선택한 여러 시작 프로젝트 옵션과 모든 프로젝트의 작업이 시작으로 설정된 것을 보여주는 솔루션 속성 페이지 대화 상자의 스크린샷.

  4. Visual Studio 맨 위에서 녹색 화살표를 클릭합니다.

    시작 옵션이 호출된 Visual Studio UI의 스크린샷.

  5. 네이티브 앱의 기본 화면에서, 로그인을 클릭합니다.

    할 일 목록 클라이언트 대화 상자의 스크린샷.

네이티브 앱 화면이 표시되지 않으면 시스템에 프로젝트 리포지토리가 저장된 폴더에서 *msalcache.bin 파일을 검색하여 제거합니다.

  1. AD FS 로그인 페이지로 리디렉션될 수 있습니다. 계속해서 로그인 합니다.

    로그인 페이지의 스크린샷.

  2. 로그인한 후 할 일 만들기 항목에서 Web Api에 텍스트 빌드 텍스트를 입력합니다. 항목 추가를 클릭합니다. 그러면 할 일 목록 서비스(Web API)가 호출되고 해당 항목이 캐시에 추가됩니다.

    할 일 항목 섹션을 채우는 새 할 일 항목이 있는 할 일 목록 클라이언트 대화 상자의 스크린샷.

다음 단계

AD FS OpenID Connect/OAuth 흐름 및 애플리케이션 시나리오