자습서: 인증을 위해 iOS(Swift) 앱 준비
iOS 및 macOS용 MSAL(Microsoft 인증 라이브러리)을 iOS Swift 앱에 추가하는 방법을 보여 주는 자습서 시리즈의 두 번째 자습서입니다.
이 자습서에서는 다음을 수행합니다.
- iOS(Swift) 앱에 MSAL 프레임워크를 추가합니다.
- SDK 인스턴스를 만듭니다.
필수 조건
- Xcode.
- 아직 없는 경우 자습서: iOS(Swift) 모바일 앱 등록 및 구성의 지침에 따라 외부 테넌트에 앱을 등록합니다. 다음 단계를 완료해야 합니다.
- 애플리케이션을 등록합니다.
- 플랫폼 리디렉션 URL을 추가합니다.
- 퍼블릭 클라이언트 흐름을 사용하도록 설정합니다.
- Microsoft Graph에 대한 위임된 권한
- iOS(Swift) 프로젝트
iOS(Swift) 앱에 MSAL 프레임워크를 추가합니다.
MSAL 인증 SDK는 표준 OAuth2 및 OpenID Connect를 통해 앱에 인증을 통합하는 데 사용됩니다. 이 SDK에서는 Microsoft ID를 사용하여 사용자 또는 앱에 로그인할 수 있습니다. iOS(Swift) 프로젝트에 MSAL을 추가하려면 다음 단계를 수행합니다.
- Xcode에서 iOS 프로젝트를 엽니다.
- 파일 메뉴에서 패키지 종속성 추가...를 선택합니다.
- 패키지 URL로
https://github.com/AzureAD/microsoft-authentication-library-for-objc
를 입력하고 패키지 추가를 선택합니다.
번들 식별자 업데이트
Apple 에코시스템에서 번들 식별자는 애플리케이션에 대한 고유 식별자입니다. 프로젝트에서 번들 식별자를 업데이트하려면 다음 단계를 수행합니다.
프로젝트 설정을 엽니다. ID 섹션에 번들 식별자를 입력합니다.
마우스 오른쪽 단추로 Info.plist를 클릭하고, 파일 열기 형식>소스 코드를 차례로 선택합니다.
dict 루트 노드 아래에서
Enter_the_bundle_Id_Here
를 포털에서 사용한 번들 ID로 바꿉니다. 문자열의msauth.
접두사를 확인합니다.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
SDK 인스턴스 만들기
프로젝트에서 MSAL 인스턴스를 만들려면 다음 단계를 수행합니다.
ViewController
클래스의 맨 위에import MSAL
을 추가하여 MSAL 라이브러리를 보기 컨트롤러로 가져옵니다.viewDidLoad()
함수 바로 앞에 다음 코드를 추가하여 ViewController 클래스에applicationContext
멤버 변수를 추가합니다.var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
이 코드는
MSALPublicClientApplication
의 인스턴스를 저장하는applicationContext
와MSALWebviewParameters
의 인스턴스를 저장하는webViewParameters
의 두 변수를 선언합니다.MSALPublicClientApplication
은 퍼블릭 클라이언트 애플리케이션을 처리하기 위해 MSAL에서 제공하는 클래스입니다. 이MSALWebviewParameters
는 인증 프로세스 중에 사용되는 웹 보기를 구성하기 위한 매개 변수를 정의하는 MSAL에서 제공하는 클래스입니다.보기
viewDidLoad()
함수에 다음 코드를 추가합니다.do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
이 코드는 MSAL을 초기화하려고 시도하고 프로세스 중에 발생하는 모든 오류를 처리합니다. 오류가 발생하면 로깅을 오류 세부 정보로 업데이트합니다.
MSAL을 초기화하는
initMSAL()
함수를 만드는 다음 코드를 추가합니다.func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
이 코드는 iOS용 MSAL을 초기화합니다. 먼저 제공된 Configuration.kAuthority 문자열을 사용하여 권한에 대한 URL을 만들려고 시도합니다. 성공하면 해당 URL을 기준으로 MSAL 권한 개체를 만듭니다. 그런 다음, 지정된 클라이언트 ID, 리디렉션 URI 및 권한으로
MSALPublicClientApplication
을 구성합니다. 모든 구성이 올바르게 설정되면 구성된MSALPublicClientApplication
으로 애플리케이션 컨텍스트를 초기화합니다. 프로세스 중에 오류가 발생하면 오류를 throw합니다.Configuration.swift 파일을 만들고 다음 구성을 추가합니다.
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
이 Swift 구성 코드는 이름이
Configuration
인 클래스를 정의하고@objcMembers
로 표시됩니다. 여기에는 인증 설정과 관련된 다양한 구성 매개 변수에 대한 정적 상수가 포함됩니다. 이러한 매개 변수에는 테넌트 하위 도메인, 클라이언트 ID, 리디렉션 URI, 보호된 API 엔드포인트 및 범위가 포함됩니다. 이러한 구성 상수는 애플리케이션 설정과 관련된 적절한 값으로 업데이트해야 합니다.자리 표시자 찾기:
Enter_the_Application_Id_Here
를 이전에 등록한 앱의 애플리케이션(클라이언트) ID로 바꿉니다.Enter_the_Redirect_URI_Here
. 그런 다음, 플랫폼 리디렉션 URL을 추가했을 때 이전에 다운로드한 MSAL 구성 파일에서 이를 kRedirectUri 값으로 바꿉니다.Enter_the_Protected_API_Scopes_Here
그런 다음, 이전에 기록된 범위로 바꿉니다. 범위를 기록하지 않은 경우 이 범위 목록을 비워 둘 수 있습니다.Enter_the_Tenant_Subdomain_Here
를 디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어, 테넌트 기본 도메인이contoso.onmicrosoft.com
인 경우contoso
를 사용합니다. 테넌트 하위 도메인을 모르는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.
사용자 지정 URL 도메인 사용(선택 사항)
사용자 지정 도메인을 사용하여 인증 URL을 완전히 브랜딩합니다. 사용자 관점에서 볼 때, 사용자는 인증 과정 동안 ciamlogin.com 도메인 이름으로 리디렉션되는 것이 아니라 도메인에 남아 있습니다.
사용자 지정 도메인을 사용하려면 다음 단계를 따릅니다.
외부 테넌트에 대한 사용자 지정 URL 도메인을 사용하도록 설정하려면 외부 테넌트의 앱에 대한 사용자 지정 URL 도메인 사용의 단계를 사용합니다.
Configuration.swift 파일을 엽니다.
kAuthority
속성의 값을 https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here로 업데이트합니다.Enter_the_Custom_Domain_Here
를 사용자 지정 URL 도메인으로,Enter_the_Tenant_ID_Here
를 테넌트 ID로 바꿉니다. 테넌트 ID가 없는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.
Configuration.swift 파일을 변경한 후 사용자 지정 URL 도메인이 login.contoso.com이고 테넌트 ID가 aaaabbbb-0000-cccc-1111-dddd2222eeee인 경우 파일은 다음 코드 조각과 유사해야 합니다.
import Foundation
@objcMembers
class Configuration {
static let kTenantSubdomain = "login.contoso.com"
// Update the below to your client ID you received in the portal.
static let kClientID = "Enter_the_Application_Id_Here"
static let kRedirectUri = "Enter_the_Redirect_URI_Here"
static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
}