다음을 통해 공유


샘플 iOS(Swift) 앱에서 사용자 로그인 및 보호된 웹 API 호출

이 가이드에서는 사용자를 로그인하고 보호된 ASP.NET Core 웹 API를 호출하도록 샘플 iOS 모바일 애플리케이션을 구성하는 방법을 보여 줍니다.

이 문서에서는 다음 작업을 수행합니다.

  • Microsoft Entra 관리 센터에 애플리케이션을 등록합니다.
  • 플랫폼 리디렉션 URL을 추가합니다.
  • 공용 클라이언트 흐름을 사용합니다.
  • 고객 테넌트 세부 정보에 고유한 Microsoft Entra 외부 ID를 사용하도록 iOS 구성 코드 샘플 파일을 업데이트합니다.
  • 샘플 iOS 모바일 애플리케이션을 실행하고 테스트합니다.

필수 조건

  • Xcode.

  • 외부 테넌트입니다. 아직 없는 경우 평가판에 등록합니다.

  • ToDoList.Read와 같이 하나 이상의 범위(위임된 권한)와 하나의 앱 역할(애플리케이션 권한)을 노출하는 API 등록입니다. 아직 없는 경우 샘플 iOS 모바일 앱에서 API 호출 지침에 따라 기능적으로 보호되는 ASP.NET Core 웹 API를 확보하세요. 다음 단계를 완료해야 합니다.

    • 웹 API 애플리케이션을 등록합니다.
    • API 범위를 구성합니다.
    • 앱 역할을 구성합니다.
    • 선택적 클레임을 구성합니다.
    • 샘플 웹 API를 복제 또는 다운로드합니다.
    • 샘플 웹 API를 구성 및 실행합니다.

애플리케이션 등록

애플리케이션이 Microsoft Entra를 사용하여 사용자를 로그인할 수 있도록 하려면 Microsoft Entra 외부 ID가 사용자가 생성한 애플리케이션을 인식해야 합니다. 앱 등록은 앱과 Microsoft Entra 간의 신뢰 관계를 설정합니다. 애플리케이션을 등록하면 외부 ID는 인증 요청을 만들 때 앱을 식별하는 데 사용되는 값인 애플리케이션(클라이언트) ID라는 고유 식별자를 만듭니다.

다음 단계에서는 Microsoft Entra 관리 센터에 앱을 등록하는 방법을 보여 줍니다.

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

  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 외부 테넌트로 전환합니다.

  3. ID>애플리케이션>앱 등록으로 이동합니다.

  4. + 새 등록을 선택합니다.

  5. 애플리케이션 등록 페이지가 표시됩니다.

    1. 앱 사용자에게 표시될 의미 있는 애플리케이션 이름을 입력합니다(예: ciam-client-app).
    2. 지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
  6. 등록을 선택합니다.

  7. 성공적으로 등록되면 애플리케이션의 개요 창이 표시됩니다. 애플리케이션 소스 코드에 사용할 애플리케이션(클라이언트) ID를 기록해 둡니다.

플랫폼 리디렉션 URL 추가

앱 등록에 앱 형식을 지정하려면 다음 단계를 수행합니다.

  1. 관리에서 인증을 선택합니다.
  2. 플랫폼 구성 페이지에서 플랫폼 추가를 선택한 다음, iOS/macOS 옵션을 선택합니다.
  3. 프로젝트의 번들 ID를 입력합니다. 샘플 코드를 다운로드한 경우 이 값은 com.microsoft.identitysample.ciam.MSALiOS입니다.
  4. 구성을 선택하고 iOS/macOS 구성 창에 나타나는 MSAL 구성을 저장합니다. 그러면 나중에 앱을 구성할 때 이 구성을 입력할 수 있습니다.
  5. 완료를 선택합니다.

공용 클라이언트 흐름 사용

앱을 공용 클라이언트로 식별하려면 다음 단계를 따릅니다.

  1. 관리에서 인증을 선택합니다.

  2. 고급 설정에서 공용 클라이언트 흐름 허용에 대해 를 선택합니다.

  3. 저장을 선택하여 변경 내용을 저장합니다.

애플리케이션을 등록하면 User.Read 권한이 할당됩니다. 그러나 테넌트는 외부 테넌트이므로 고객 사용자 자체는 이 권한에 동의할 수 없습니다. 관리자는 테넌트의 모든 사용자를 대신하여 이 권한에 동의해야 합니다.

  1. 앱 등록 페이지에서 사용자가 만든 애플리케이션(예: ciam-client-app)을 선택하여 해당 개요 페이지를 엽니다.

  2. 관리 아래에서 API 권한을 선택합니다.

    1. <테넌트 이름>에 대한 관리자 동의 부여, 를 차례로 선택합니다.
    2. 새로 고침을 선택한 다음, 권한에 대한 상태 아래에 테넌트 이름>에 대해 <부여된 항목이 표시되는지 확인합니다.

iOS 샘플 앱에 Web API 권한 부여

클라이언트 앱과 웹 API를 모두 등록하고 범위를 만들어 API를 공개한 후에는 다음 단계를 수행하여 API에 대한 클라이언트의 권한을 구성할 수 있습니다.

  1. 앱 등록 페이지에서 만든 애플리케이션(예: ciam-client-app)을 선택하여 개요 페이지를 엽니다.

  2. 관리 아래에서 API 권한을 선택합니다.

  3. 구성된 사용 권한 아래에서 권한 추가를 선택합니다.

  4. 내 조직에서 사용하는 API 탭을 선택합니다.

  5. API 목록에서 ciam-ToDoList-api와 같은 API를 선택합니다.

  6. 위임된 권한 옵션을 선택합니다.

  7. 권한 목록에서 ToDoList.Read, ToDoList.ReadWrite을 선택합니다(필요한 경우 검색 상자 사용).

  8. 사용 권한 추가 단추를 선택합니다.

  9. 이제 권한이 올바르게 할당되었습니다. 그러나 테넌트는 고객의 테넌트이므로 소비자 사용자 자신은 이러한 권한에 동의할 수 없습니다. 이를 해결하려면 관리자로서 테넌트의 모든 사용자를 대신하여 다음 권한에 동의해야 합니다.

    1. <테넌트 이름>에 대한 관리자 동의 부여를 선택한 다음 를 선택합니다.

    2. 새로 고침을 선택한 다음 두 권한에 대해 <테넌트 이름>에 부여됨상태 아래에 표시되는지 확인합니다.

  10. 구성된 권한 목록에서 ToDoList.ReadToDoList.ReadWrite 권한을 한 번에 하나씩 선택한 다음 나중에 사용할 수 있도록 권한의 전체 URI를 복사합니다. 전체 권한 URI는 api://{clientId}/{ToDoList.Read} 또는 api://{clientId}/{ToDoList.ReadWrite}와 유사합니다.

샘플 iOS 모바일 애플리케이션 복제

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

  • 샘플을 복제하려면 명령 프롬프트를 열고 프로젝트를 만들려는 위치로 이동한 후 다음 명령을 입력합니다.

    git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-ios-sample.git
    

샘플 iOS 모바일 애플리케이션 구성

웹 API 리소스에 대한 인증 및 액세스를 활성화하려면 다음 단계에 따라 샘플을 구성합니다.

  1. Xcode에서 복제한 프로젝트를 엽니다.

  2. /MSALiOS/Configuration.swift 파일을 엽니다.

  3. 자리 표시자 찾기:

    • Enter_the_Application_Id_Here를 이전에 등록한 앱의 애플리케이션(클라이언트) ID로 바꿉니다.
    • Enter_the_Redirect_URI_Here 그리고 플랫폼 리디렉션 URL을 추가했을 때 이전에 다운로드한 MSAL(Microsoft 인증 라이브러리) 구성 파일에서 이를 kRedirectUri 값으로 바꿉니다.
    • Enter_the_Protected_API_Full_URL_Here 및 웹 API에 대한 URL로 바꿉니다. Enter_the_Protected_API_Full_URL_Here(은)는 ASP.NET Web API에 대한 기본 URL(배포된 웹 API URL) 및 엔드포인트(/api/todolist)를 포함해야 합니다.
    • Enter_the_Protected_API_Scopes_HereiOS 샘플 앱에 Web API 권한 부여에 기록된 범위로 바꿉니다.
    • Enter_the_Tenant_Subdomain_Here를 디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어, 테넌트 기본 도메인이 contoso.onmicrosoft.com인 경우 contoso를 사용합니다. 테넌트 하위 도메인을 모르는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.

앱 구성을 완료했으며 실행할 준비가 되었습니다.

iOS 샘플 앱 실행 및 웹 API 호출

앱을 빌드하고 실행하려면 다음 단계를 수행합니다.

  1. 코드를 빌드하고 실행하려면 Xcode의 제품 메뉴에서 실행을 선택합니다. 빌드에 성공하면 Xcode가 시뮬레이터에서 샘플 앱을 시작합니다.
  2. 대화형으로 토큰 획득을 선택하여 액세스 토큰을 요청합니다.
  3. API - GET 수행을 선택하여 이전에 설정한 ASP.NET Core 웹 API를 호출합니다. 웹 API 호출에 성공하면 HTTP 200이 반환되며, HTTP 403은 무단 액세스를 의미합니다.