다음을 통해 공유


Azure AD B2C를 사용하여 샘플 iOS Swift 앱에서 인증 구성

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

이 문서에서는 샘플 iOS Swift 응용 프로그램을 사용하여 모바일 앱에 Azure AD B2C(Azure Active Directory B2C) 인증을 추가하는 방법을 설명합니다.

개요

OIDC(OpenID Connect)는 OAuth 2.0을 기반으로 하는 인증 프로토콜입니다. OIDC를 사용하여 애플리케이션에 사용자를 안전하게 로그인할 수 있습니다. 이 모바일 앱 샘플은 OIDC 권한 부여 코드 PKCE(Proof Key for Code Exchange) 흐름과 함께 MSAL(Microsoft 인증 라이브러리) 을 사용합니다. MSAL은 모바일 앱에 인증 및 권한 부여 지원을 간단하게 추가할 수 있는 Microsoft 제공 라이브러리입니다.

로그인 흐름에 포함되는 단계는 다음과 같습니다.

  1. 사용자가 앱을 열고 로그인을 선택합니다.
  2. 앱은 모바일 장치의 시스템 브라우저를 열고 Azure AD B2C에 대한 인증 요청을 시작합니다.
  3. 사용자가 등록 또는 로그인하거나, 암호를 초기화하거나, 소셜 계정으로 로그인합니다.
  4. 사용자가 성공적으로 로그인하면 Azure AD B2C가 앱에 권한 부여 코드를 반환합니다.
  5. 앱은 다음 작업을 수행합니다.
    1. 인증 코드를 ID 토큰, 액세스 토큰 및 새로 고침 토큰으로 교환합니다.
    2. ID 토큰 클레임을 읽습니다.
    3. 나중에 사용할 수 있도록 토큰을 메모리 내 캐시에 저장합니다.

앱 등록 개요

앱이 Azure AD B2C에 로그인하고 웹 API를 호출할 수 있도록 하려면 Azure AD B2C 디렉터리에 두 개의 애플리케이션을 등록합니다.

  • 모바일 응용 프로그램 등록을 통해 앱은 Azure AD B2C로 로그인할 수 있습니다. 앱을 등록하는 동안 리디렉션 URI를 지정합니다. 리디렉션 URI는 사용자가 Azure AD B2C로 인증된 후 Azure AD B2C에서 리디렉션되는 엔드포인트입니다. 앱 등록 프로세스는 모바일 앱을 고유하게 식별하는 애플리케이션 ID( 클라이언트 ID라고도 함)를 생성합니다(예: 앱 ID: 1).

  • 웹 API 등록을 사용하면 앱에서 보안 웹 API를 호출할 수 있습니다. 등록은 웹 API 권한(범위)을 노출합니다. 앱 등록 프로세스는 웹 API(예: 앱 ID: 2)를 고유하게 식별하는 애플리케이션 ID를 생성합니다. 웹 API 범위(앱 ID: 2)에 대한 모바일 앱(앱 ID: 1) 권한을 부여합니다.

애플리케이션 등록 및 아키텍처는 다음 다이어그램에 나와 있습니다.

웹 API 호출 등록 및 토큰이 있는 모바일 앱의 다이어그램입니다.

웹 API 호출

인증이 완료된 후 사용자는 보호된 웹 API를 호출하는 앱을 조작합니다. 웹 API는 전달자 토큰 인증을 사용합니다. 전달자 토큰은 앱이 Azure AD B2C에서 가져온 액세스 토큰입니다. 앱은 HTTPS 요청의 인증 헤더에 토큰을 전달합니다.

Authorization: Bearer <access token>

액세스 토큰의 범위가 웹 API의 범위와 일치하지 않는 경우 인증 라이브러리는 올바른 범위의 새 액세스 토큰을 얻게 됩니다.

로그아웃 흐름

로그아웃 흐름에 포함되는 단계는 다음과 같습니다.

  1. 앱에서 사용자가 로그아웃합니다.
  2. 앱은 해당 세션 개체를 지우고, 인증 라이브러리는 해당 토큰 캐시를 지웁니다.
  3. 앱이 사용자를 Azure AD B2C 로그아웃 엔드포인트로 이동하여 Azure AD B2C 세션을 종료합니다.
  4. 사용자가 앱으로 다시 리디렉션됩니다.

필수 조건

다음 중 하나를 실행하는 컴퓨터:

1단계: 사용자 흐름 구성

사용자가 앱에 로그인하려고 하면 앱은 사용자 흐름을 통해 권한 부여 엔드포인트에 대한 인증 요청을 시작합니다. 사용자 흐름은 사용자 환경을 정의하고 제어합니다. 사용자 흐름을 완료하면 Azure AD B2C에서 토큰을 생성한 다음, 사용자를 애플리케이션으로 다시 리디렉션합니다.

아직 없는 경우 사용자 흐름 또는 사용자 지정 정책을 만듭니다. 다음과 같이 3개의 개별 사용자 흐름을 만드는 단계를 반복합니다.

  • 결합된 로그인 및 등록 사용자 흐름(예: susi). 이 사용자 흐름은 암호를 잊으셨나요? 환경도 지원합니다.
  • 프로필 편집 사용자 흐름(예: edit_profile).
  • 암호 재설정 사용자 흐름(예: reset_password).

Azure AD B2C는 사용자 흐름 이름 앞에 B2C_1_를 추가합니다. 예를 들어 susiB2C_1_susi이 됩니다.

2단계: 모바일 애플리케이션 등록

모바일 앱 및 웹 API 응용 프로그램 등록을 만들고 웹 API의 범위를 지정합니다.

2.1단계: 웹 API 앱 등록

웹 API 앱 등록(앱 ID: 2)을 만들려면 다음 단계를 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. Azure AD B2C 테넌트가 포함된 디렉터리를 사용하고 있는지 확인합니다. 포털 도구 모음에서 디렉터리 + 구독 아이콘을 선택합니다.

  3. 포털 설정 | 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾은 다음, 전환을 선택합니다.

  4. Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.

  5. 앱 등록을 선택하고, 새 등록을 선택합니다.

  6. 이름으로 애플리케이션의 이름(예: my-api1)을 입력합니다. 리디렉션 URI지원되는 계정 유형의 기본값은 그대로 둡니다.

  7. 등록을 선택합니다.

  8. 앱 등록이 완료되면 개요를 선택합니다.

  9. 웹 애플리케이션을 구성할 때 나중에 사용할 수 있도록 애플리케이션(클라이언트) ID 값을 기록합니다.

    웹 A P I 애플리케이션 ID를 가져오는 방법을 보여 주는 스크린샷

2.2단계: 웹 API 앱 범위 구성

  1. 사용자가 만든 my-api1 애플리케이션(앱 ID: 2)을 선택하여 개요 페이지를 엽니다.

  2. 관리아래에서 API노출을 선택합니다.

  3. 애플리케이션 ID URI 옆에 있는 설정 링크를 선택합니다. 기본값(GUID)을 고유한 이름(예: tasks-api)으로 바꾼 다음, 저장을 선택합니다.

    웹 애플리케이션은 웹 API에 대한 액세스 토큰을 요청할 때 API에 대해 정의된 각 범위의 접두사로 이 URI를 추가해야 합니다.

  4. 이 API에서 정의된 범위 아래에서 범위 추가를 선택합니다.

  5. API에 대한 읽기 권한을 정의하는 범위를 만들려면 다음을 수행합니다.

    1. 범위 이름으로 tasks.read를 입력합니다.
    2. 관리자 동의 표시 이름으로 작업 API에 대한 읽기 권한을 입력합니다.
    3. 관리자 동의 설명으로 작업 API에 대한 읽기 권한 허용을 입력합니다.
  6. 범위 추가를 선택합니다.

  7. 범위 추가를 선택한 후 API에 대한 쓰기 권한을 정의하는 범위를 추가합니다.

    1. 범위 이름으로 tasks.write를 입력합니다.
    2. 관리자 동의 표시 이름으로 작업 API에 대한 쓰기 권한을 입력합니다.
    3. 관리자 동의 설명으로 작업 API에 대한 쓰기 권한 허용을 입력합니다.
  8. 범위 추가를 선택합니다.

2.3단계: 모바일 앱 등록

모바일 앱 등록을 만들려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.
  2. 앱 등록을 선택하고, 새 등록을 선택합니다.
  3. 이름에서 애플리케이션의 이름(예: iOs-app1)을 입력합니다.
  4. 지원되는 계정 유형 아래에서 ID 공급자 또는 조직 디렉터리에서 계정을 선택합니다(사용자 흐름으로 사용자를 인증하기 위해).
  5. 리디렉션 URI에서 공용 클라이언트/네이티브(모바일 및 데스크톱)를 선택한 다음 URL 상자에 을 입력합니다msauth.com.microsoft.identitysample.MSALiOS://auth.
  6. 등록을 선택합니다.
  7. 앱 등록이 완료되면 개요를 선택합니다.
  8. 모바일 응용 프로그램을 구성할 때 나중에 사용할 수 있도록 응용 프로그램(클라이언트) ID 를 기록합니다. 모바일 애플리케이션 ID를 강조 표시하는 스크린샷입니다.

2.4단계: 웹 API에 대한 모바일 앱 권한 부여

앱(앱 ID: 1) 권한을 부여하려면 다음 단계를 수행합니다.

  1. 앱 등록을 선택한 다음, 사용자가 만든 앱(앱 ID: 1)을 선택합니다.

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

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

  4. 내 API 탭을 선택합니다.

  5. 웹 애플리케이션에 액세스 권한을 부여할 API(앱 ID: 2)를 선택합니다. 예를 들어 my-api1을 입력합니다.

  6. 권한에서 작업을 펼친 다음, 앞에서 정의한 범위(예: tasks.readtasks.write)를 선택합니다.

  7. 권한 추가를 선택합니다.

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

  9. 를 선택합니다.

  10. 새로 고침을 선택한 다음, 두 범위 모두 상태...에 대해 허용됨이 표시되는지 확인합니다.

  11. 구성된 권한 목록에서 범위를 선택한 다음 범위 전체 이름을 복사합니다.

    읽기 액세스 권한이 부여되었음을 보여 주는 구성된 권한 창의 스크린샷

3단계: 샘플 웹 API 구성

이 샘플은 모바일 앱이 웹 API에 사용할 수 있는 관련 범위가 있는 액세스 토큰을 획득합니다. 코드에서 Web API를 호출하려면 다음을 수행합니다.

  1. 기존 웹 API를 사용하거나 새 웹 API를 만듭니다. 자세한 내용은 Azure AD B2C를 사용하여 사용자 고유의 웹 API에서 인증 사용을 참조하세요.
  2. 웹 API를 호출하도록 샘플 코드를 변경합니다.
  3. 웹 API를 구성한 후 웹 API 엔드포인트의 URI를 복사합니다. 다음 단계에서 웹 API 엔드포인트를 사용합니다.

팁 (조언)

웹 API가 없는 경우에도 이 샘플을 실행할 수 있습니다. 이 경우 앱은 액세스 토큰을 반환하지만 웹 API를 호출할 수 없습니다.

4단계: iOS 모바일 앱 샘플 가져오기

  1. .zip 파일을 다운로드하거나 GitHub 리포지토리에서 샘플 웹앱을 복제합니다.

    git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
    
  2. CocoaPods를 사용하여 MSAL 라이브러리를 설치합니다. 터미널 창에서 프로젝트 루트 폴더로 이동합니다. 이 폴더에는 podfile 파일이 포함되어 있습니다. 다음 명령을 실행합니다.

    pod install
    
  3. Xcode로 작업 공간을 MSALiOS.xcworkspace 엽니다.

5단계: 샘플 모바일 앱 구성

ViewController.swift 파일을 엽니다. 클래스 멤버는 ViewController Azure AD B2C ID 공급자에 대한 정보를 포함합니다. 모바일 앱은 이 정보를 사용하여 Azure AD B2C와 트러스트 관계를 설정하고, 사용자를 로그인 및 로그아웃하고, 토큰을 획득하고, 유효성을 검사합니다.

다음 클래스 멤버를 업데이트합니다.

열쇠 가치
k테넌트 이름 Azure AD B2C 테넌트 전체 테넌트 이름 (예: contoso.onmicrosoft.com).
kAuthorityHostName Azure AD B2C 테넌트 이름 (예: contoso.b2clogin.com)의 첫 번째 부분입니다.
k클라이언트 ID 2.3단계의 모바일 애플리케이션 ID입니다.
kRedirectUri 모바일 응용 프로그램은 2.3msauth.com.microsoft.identitysample.MSALiOS://auth단계의 URI를 리디렉션합니다.
kSignupOrSigninPolicy 등록 또는 로그인 사용자 흐름 또는 1단계에서 만든 사용자 지정 정책입니다.
kEditProfilePolicy 프로필 편집 사용자 흐름 또는 1단계에서 만든 사용자 지정 정책입니다.
kGraphURI (선택 사항) 3단계 에서 만든 웹 API 엔드포인트(예: https://contoso.azurewebsites.net/hello)입니다.
k스코프 2.4단계에서 만든 웹 API 범위입니다.

6단계: 모바일 앱 실행 및 테스트

  1. 연결된 iOS 디바이스의 시뮬레이터를 사용하여 프로젝트를 빌드하고 실행합니다.

  2. 로그인을 선택한 다음, Azure AD B2C 로컬 또는 소셜 계정으로 등록하거나 로그인합니다.

    로그인 흐름을 시작하는 방법을 강조 표시하는 스크린샷

  3. 인증에 성공하면 탐색 모음에 표시 이름이 표시됩니다.

    Azure AD B2C 액세스 토큰 및 사용자 ID를 강조 표시하는 스크린샷

다음 단계

알아보기: