적용: 워크포스 테넌트
외부 테넌트 (자세히 알아보기)
이 빠른 시작에서는 ASP.NET Core 웹 API를 호출하도록 iOS 샘플 애플리케이션을 구성하는 방법을 알아봅니다.
필수 구성 요소
- 네이티브 인증사용하여 샘플 iOS(Swift) 모바일 앱에서 사용자를 로그인합니다.
-
모든 조직 디렉터리 및 개인 Microsoft 계정의 계정에 대해 구성된 웹 API에 대한 Microsoft Entra 관리 센터에 새 애플리케이션을 등록합니다. 자세한 내용은 Register an application을 참조하십시오. 응용 프로그램 개요 페이지에서 다음 값을 나중에 사용할 수 있도록 기록하십시오.
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
웹 API 애플리케이션 등록
최소한 애플리케이션 개발자로 Microsoft Entra 관리 센터에 로그인합니다.
여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘
사용하여 디렉터리 + 구독 메뉴에서 외부 테넌트로 전환합니다.
Entra ID>앱 등록으로 이동합니다.
+ 새 등록선택합니다.
표시되는 애플리케이션 등록 페이지에서 애플리케이션의 등록 정보를 입력합니다.
이름 섹션에서 앱 사용자에게 표시되는 의미 있는 애플리케이션 이름(예: ciam-ToDoList-api )을 입력합니다.
지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
등록 선택하여 애플리케이션을 만듭니다.
등록이 완료되면 애플리케이션의 개요 창 표시됩니다. 애플리케이션 소스 코드에서 사용할 디렉터리(테넌트) ID 및 애플리케이션(클라이언트) ID 기록합니다.
API 범위 구성
클라이언트 앱이 사용자에 대한 액세스 토큰을 성공적으로 가져오려면 API가 위임된 권한라고도 하는 하나 이상의 범위를 게시해야 합니다. 범위를 게시하려면 다음 단계를 수행합니다.
앱 등록 페이지에서 만든 API 애플리케이션(ciam-ToDoList-api)을 선택하여 개요 페이지를 엽니다.
관리아래에서 API노출을 선택합니다.
페이지 위쪽의 애플리케이션 ID URI옆에 있는 추가 링크를 선택하여 이 앱에 고유한 URI를 생성합니다.
api://{clientId}
같은 제안된 애플리케이션 ID URI를 수락하고 저장선택합니다. 웹 애플리케이션이 웹 API에 대한 액세스 토큰을 요청하면 API에 대해 정의하는 각 범위에 대한 접두사로 URI를 추가합니다.이 API에 의해 정의된 범위에서 범위 추가를 선택합니다.
API에 대한 읽기 액세스를 정의하는 다음 값을 입력한 다음, 범위 추가 선택하여 변경 내용을 저장합니다.
재산 값 범위 이름 ToDoList.읽기 동의할 수 있는 사람 관리자 전용 관리자 동의 표시 이름 'TodoListApi' 사용하여 사용자 ToDo 목록을 읽습니다. 관리자 동의 설명 앱이 'TodoListApi'사용하여 사용자의 ToDo 목록을 읽을 수 있도록 허용합니다. 주 활성화됨 범위 추가을 다시 선택하고 API에 대한 읽기 및 쓰기 액세스 범위를 정의하는 다음 값을 입력하세요. 범위 추가 선택하여 변경 내용을 저장합니다.
재산 값 범위 이름 할일목록.읽기쓰기 동의할 수 있는 사람 관리자 전용 관리자 동의 표시 이름 'ToDoListApi' 사용하여 사용자 ToDo 목록 읽기 및 쓰기 관리자 동의 설명 앱이 'ToDoListApi' 사용하여 사용자의 ToDo 목록을 읽고 쓰도록 허용합니다. 주 활성화됨
웹 API에 권한을 게시할 때 최소 권한 원칙을 대해 자세히 알아봅니다.
앱 역할 구성
API는 클라이언트 앱이 직접 액세스 토큰을 얻기 위해 애플리케이션 권한으로 하나 이상의 앱 역할을 게시해야 합니다. 애플리케이션 권한은 API가 클라이언트 애플리케이션이 자체 인증에 성공하고 사용자를 로그인할 필요가 없을 때 게시해야 하는 사용 권한의 유형입니다. 애플리케이션 권한을 게시하려면 다음 단계를 수행합니다.
앱 등록 페이지에서 만든 애플리케이션(예: ciam-ToDoList-api)을 선택하여 개요 페이지를 엽니다.
관리아래에서 앱 역할선택합니다.
앱 역할 만들기선택한 다음, 다음 값을 입력한 다음, 적용 선택하여 변경 내용을 저장합니다.
재산 값 표시 이름 ToDoList.Read.All 허용되는 멤버 형식 애플리케이션 값 ToDoList.Read.All 묘사 앱이 'TodoListApi' 사용하여 모든 사용자의 ToDo 목록을 읽을 수 있도록 허용 이 앱 역할을 사용하도록 설정하시겠습니까? 계속 확인 앱 역할 만들기 다시 선택한 다음 두 번째 앱 역할에 대해 다음 값을 입력한 다음, 적용 선택하여 변경 내용을 저장합니다.
재산 값 표시 이름 할일목록.읽기쓰기.전체 허용되는 멤버 형식 애플리케이션 값 할일목록.읽기쓰기.전체 묘사 앱이 'ToDoListApi' 사용하여 모든 사용자의 ToDo 목록을 읽고 쓰도록 허용합니다. 이 앱 역할을 사용하도록 설정하시겠습니까? 계속 확인
선택적 클레임 구성
idtyp 선택적 클레임을 추가하여 웹 API에서 토큰이 앱 토큰인지 아니면 앱 + 사용자 토큰인지 확인할 수 있습니다. scp 및 역할의 조합을 동일한 용도로 클레임을 사용할 수 있지만 idtyp 클레임을 사용하는 것이 앱 토큰과 앱 + 사용자 토큰을 구분하는 가장 쉬운 방법입니다. 예를 들어, 토큰이 앱 전용 토큰인 경우 이 클레임의 값은 앱입니다.
iOS 샘플 앱에 API 권한 부여
클라이언트 앱과 웹 API를 모두 등록하고 범위를 만들어 API를 노출한 후에는 다음 단계에 따라 API에 대한 클라이언트의 권한을 구성할 수 있습니다.
앱 등록 페이지에서 만든 애플리케이션(예: ciam-client-app)을 선택하여 개요 페이지를 엽니다.
관리아래에서 API 권한을 선택합니다.
구성된 권한에서 사용 권한 추가를 선택합니다.
조직이 사용하는 API를 선택하려면 탭을 클릭하세요.
API 목록에서 ciam-ToDoList-api같은 API를 선택합니다.
위임된 권한 옵션을 선택합니다.
사용 권한 목록에서 ToDoList.Read, ToDoList.ReadWrite 선택합니다(필요한 경우 검색 상자 사용).
권한 추가 단추를 선택합니다.
이 시점에서 사용 권한을 올바르게 할당했습니다. 그러나 테넌트는 고객의 테넌트이므로 소비자 사용자 자체는 이러한 권한에 동의할 수 없습니다. 이 문제를 해결하려면 관리자가 테넌트에 있는 모든 사용자를 대신하여 이러한 권한에 동의해야 합니다.
테넌트 이름<>대한 관리자 동의 부여선택한 다음, 예선택합니다.
새로 고침 을 선택하고, 두 권한의 < 아래에 테넌트 이름>에 대해 부여됨 이 표시되는지 확인합니다.
구성된 사용 권한 목록에서 ToDoList.Read 권한과 ToDoList.ReadWrite 권한을 각각 하나씩 선택한 후, 나중에 사용할 수 있도록 사용 권한의 전체 URI를 복사합니다. 전체 권한 URI는
api://{clientId}/{ToDoList.Read}
또는api://{clientId}/{ToDoList.ReadWrite}
비슷합니다.
샘플 Web API 복제 또는 다운로드
샘플 애플리케이션을 가져오려면 GitHub에서 복제하거나 .zip 파일로 다운로드할 수 있습니다.
샘플을 복제하려면 명령 프롬프트를 열고 프로젝트를 만들 위치로 이동하고 다음 명령을 입력합니다.
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
.zip 파일다운로드합니다. 이름 길이가 260자 미만인 파일 경로로 추출합니다.
샘플 Web API 구성 및 실행
코드 편집기에서
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
파일을 엽니다.자리 표시자를 찾아라
-
Enter_the_Application_Id_Here
을(를) 이전에 복사해 둔 웹 API의 애플리케이션(클라이언트) ID로 대체합니다. -
Enter_the_Tenant_Id_Here
을(를) 이전에 복사한 디렉터리(테넌트) ID로 바꿉니다. -
Enter_the_Tenant_Subdomain_Here
디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어 테넌트 주 도메인이contoso.onmicrosoft.com
경우contoso
사용합니다. 테넌트 이름이 없는 경우, 테넌트 세부 정보를 읽는 방법을알아봅니다.
-
iOS 샘플 앱에 대한 웹 API를 호스트하여 호출해야 합니다. 빠른 시작 가이드: ASP.NET 웹앱을 배포하여 웹 API를 배포하십시오.
Web API를 호출하도록 샘플 iOS 모바일 앱 구성
이 샘플을 사용하면 여러 Web API URL 엔드포인트 및 범위 집합을 구성할 수 있습니다. 이 경우 하나의 Web API URL 엔드포인트와 연결된 범위만 구성합니다.
Xcode에서
/NativeAuthSampleApp/ProtectedAPIViewController.swift
파일을 엽니다. macOS를 사용하는 경우, 여기 샘플 ProtectedAPIViewController.swift 코드 파일이 있습니다.protectedAPIUrl1
찾아서 해당 값으로 웹 API URL을 입력합니다.let protectedAPIUrl1: String? = nil // Developers should set the respective URL of their web API here. For example let protectedAPIUrl1: String? = "https://api.example.com/v1/resource"
protectedAPIScopes1
을 찾아 iOS 샘플 앱 에의 API 권한 부여에 기록된 범위를 설정합니다.let protectedAPIScopes1: [String] = [] // Developers should set the respective scopes of their web API here.For example, let protectedAPIScopes = ["api://{clientId}/{ToDoList.Read}","api://{clientId}/{ToDoList.ReadWrite}"]
iOS 샘플 앱 실행 및 웹 API 호출
앱을 빌드하고 실행하려면 다음 단계를 수행합니다.
- 코드를 빌드하고 실행하려면 Xcode의 제품 메뉴에서 실행을 선택합니다. 빌드에 성공하면 Xcode가 시뮬레이터에서 샘플 앱을 시작합니다.
- API 탭을 선택하여 API 호출을 테스트합니다. 웹 API를 성공적으로 호출하면 HTTP
200
반환되고 HTTP403
권한 없는 액세스를 의미합니다.
다음 단계
자습서: iOS 앱을 네이티브 인증에 준비합니다.