자습서: 네이티브 인증을 위해 iOS/macOS 앱 준비
적용 대상: iOS(Swift) macOS(Swift)
이 자습서에서는 iOS/macOS Swift 앱에 MSAL(Microsoft 인증 라이브러리) 네이티브 인증 SDK 프레임워크를 추가하는 방법을 설명합니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- iOS/macOS 앱에 MSAL 프레임워크를 추가합니다.
- SDK 인스턴스를 만듭니다.
필수 조건
- Xcode
- 아직 없는 경우 네이티브 인증을 사용하여 샘플 iOS(Swift) 모바일 앱에서 사용자 로그인의 지침을 따르고 외부 테넌트에 앱을 등록합니다. 다음 단계를 완료해야 합니다.
- 애플리케이션을 등록합니다.
- 공용 클라이언트 및 네이티브 인증 흐름을 사용하도록 설정합니다.
- API 권한을 부여합니다.
- 사용자 흐름을 만듭니다.
- 앱을 사용자 흐름과 연결합니다.
- iOS/macOS 프로젝트
iOS/macOS 앱에 MSAL 프레임워크 추가
- Xcode에서 iOS/macOS 프로젝트를 엽니다.
- 파일 메뉴에서 패키지 종속성 추가...를 선택합니다.
- 패키지 URL로
https://github.com/AzureAD/microsoft-authentication-library-for-objc
입력 및 패키지 추가 선택. - 프로젝트 기능에 새 키 집합 그룹을 추가합니다. iOS에서
com.microsoft.adalcache
을 사용하고 macOS에서com.microsoft.identity.universalstorage
를 사용합니다.
프로젝트에 MSAL을 추가하는 기타 메커니즘 및 자세한 내용은 프로젝트 추가 정보 파일을 참조하세요.
SDK 인스턴스 만들기
ViewController
클래스의 맨 위에import MSAL
을 추가하여 MSAL 라이브러리를 보기 컨트롤러로 가져옵니다.viewDidLoad()
함수 바로 앞에 다음 코드를 추가하여ViewController
클래스에nativeAuth
구성원 변수를 추가합니다.var nativeAuth: MSALNativeAuthPublicClientApplication!
다음으로
viewDidLoad()
함수에 다음 코드를 추가합니다.do { nativeAuth = try MSALNativeAuthPublicClientApplication( clientId: "Enter_the_Application_Id_Here", tenantSubdomain: "Enter_the_Tenant_Subdomain_Here", challengeTypes: [.OOB] ) print("Initialized Native Auth successfully.") } catch { print("Unable to initialize MSAL \(error)") }
다음 값을 Microsoft Entra 관리 센터의 값으로 바꿉니다.
Enter_the_Application_Id_Here
값을 찾아 이전에 등록한 앱의 애플리케이션(클라이언트) ID로 바꿉니다.Enter_the_Tenant_Subdomain_Here
를 찾아 디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어, 테넌트 기본 도메인이contoso.onmicrosoft.com
인 경우contoso
를 사용합니다. 디렉터리(테넌트) 하위 도메인이 없는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.챌린지 유형은 앱이 지원하는 인증 방법에 대해 Microsoft Entra에 알리는 데 사용하는 값 목록입니다.
- 이메일 일회용 암호를 사용한 등록 및 로그인 흐름의 경우
[.OOB]
를 사용합니다. - 이메일 및 암호를 사용한 등록 및 로그인 흐름의 경우
[.OOB, .password]
를 사용합니다. - SSPR(셀프 서비스 암호 재설정)의 경우
[.OOB]
를 사용합니다.
챌린지 유형에 대해 자세히 알아보세요.
- 이메일 일회용 암호를 사용한 등록 및 로그인 흐름의 경우
빌드하려면 프로젝트의 도구 모음에서 제품>빌드를 선택합니다.
선택 사항: 로깅 구성
MSAL은 로깅을 사용하도록 설정하고 구성하는 데 사용할 수 있는 로깅 API를 제공합니다. MSAL의 모든 디버그 출력을 보려면 viewDidLoad()
함수 시작 부분에 다음 코드를 추가합니다.
MSALGlobalConfig.loggerConfig.logLevel = .verbose
MSALGlobalConfig.loggerConfig.setLogCallback { logLevel, message, containsPII in
if !containsPII {
print("MSAL: \(message ?? "")")
}
}
이렇게 하면 MSAL의 모든 디버그 로그가 출력됩니다. 이는 문제를 진단하고 네이티브 인증 흐름의 작동 방식을 학습하는 데 도움이 될 수 있습니다. 로그 수준 구성 및 모범 사례에 대한 자세한 내용은 iOS/macOS용 MSAL의 로깅을 참조하세요.