빠른 시작: iOS 또는 macOS 앱에서 사용자 로그인 및 Microsoft Graph 호출
이 빠른 시작에서는 네이티브 iOS 또는 macOS 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출하는 액세스 토큰을 가져오는 방법을 보여 주는 코드 샘플을 다운로드하고 실행합니다.
빠른 시작은 iOS 및 macOS 앱 모두에 적용됩니다. 일부 단계는 iOS 앱에만 필요하며 다음과 같이 표시됩니다.
필수 구성 요소
- 활성 구독이 있는 Azure 계정입니다. 계정을 무료로만드세요.
- XCode 10 이상
- iOS 10 이상
- macOS 10.12 이상
샘플 작동 방식
이 빠른 시작에서 생성된 샘플 앱의 작동 방식을 보여 주는
빠른 시작 앱 등록
애플리케이션을 등록하고 앱의 등록 정보를 솔루션에 수동으로 추가하려면 다음 단계를 수행합니다.
- 최소한 애플리케이션 개발자역할로 Microsoft Entra 관리 센터에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘
사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
- 아이덴티티>애플리케이션>앱 등록탐색합니다.
- 새 등록선택합니다.
- 애플리케이션에 대한 이름을 입력합니다. 앱 사용자에게 이 이름이 표시될 수 있으며 나중에 변경할 수 있습니다.
- 등록선택합니다.
- 관리아래에서, 인증을 선택한 다음>플랫폼 추가에서>iOS을 추가합니다.
- 애플리케이션에 대한 번들 식별자 입력합니다. 번들 식별자는 애플리케이션을 고유하게 식별하는 고유 문자열입니다(예:
com.<yourname>.identitysample.MSALMacOS
). 사용하는 값을 기록해 둡다. iOS 구성은 macOS 애플리케이션에도 적용됩니다. - 구성을 선택하고 이 빠른 시작의 뒷부분에서 MSAL 구성 세부 정보를 저장합니다.
- 완료선택합니다.
2단계: 샘플 프로젝트 다운로드
3단계: 종속성 설치
- zip 파일을 추출합니다.
- 터미널 창에서 다운로드한 코드 샘플이 있는 폴더로 이동하고
pod install
실행하여 최신 MSAL 라이브러리를 설치합니다.
4단계: 프로젝트 구성
위의 옵션 1을 선택한 경우 다음 단계를 건너뛸 수 있습니다.
XCode에서 프로젝트를 엽니다.
ViewController.swift 편집하고 'let kClientID'로 시작하는 줄을 다음 코드 조각으로 바꿉니다. 이 빠른 시작의 앞부분에서 앱을 등록할 때 저장한 clientID로
kClientID
값을 업데이트해야 합니다.let kClientID = "Enter_the_Application_Id_Here"
Microsoft Entra 국가별 클라우드를위한 앱을 빌드하는 경우 'let kGraphEndpoint'와 'let kAuthority'로 시작하는 줄을 올바른 엔드포인트로 바꿉니다. 전역 액세스의 경우 기본값을 사용합니다.
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
다른 엔드포인트는 여기에 문서화되어 있습니다. 예를 들어 Microsoft Entra Germany에서 빠른 시작을 실행하려면 다음을 사용합니다.
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
프로젝트 설정을 엽니다. ID 섹션에서 번들 식별자입력합니다.
Info.plist 마우스 오른쪽 버튼으로 클릭한 후 >열기 소스 코드로를 선택합니다.
dict 루트 노드에서 포털에서 사용한 번들 ID로
Enter_the_bundle_Id_Here
을 교체합니다. 문자열의msauth.
접두사를 확인합니다.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
앱을 빌드하고 실행합니다.
추가 정보
이 빠른 시작에 대해 자세히 알아보려면 다음 섹션을 참조하세요.
MSAL 가져오기
MSAL(MSAL.framework)은 사용자를 로그인하고 Microsoft ID 플랫폼으로 보호되는 API에 액세스하는 데 사용되는 토큰을 요청하는 데 사용되는 라이브러리입니다. 다음 프로세스를 사용하여 애플리케이션에 MSAL을 추가할 수 있습니다.
$ vi Podfile
프로젝트의 대상을 사용하여 이 podfile에 다음을 추가합니다.
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
CocoaPods 설치 명령을 실행합니다.
pod install
MSAL 초기화
다음 코드를 추가하여 MSAL에 대한 참조를 추가할 수 있습니다.
import MSAL
그런 다음, 다음 코드를 사용하여 MSAL을 초기화합니다.
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
어디: | 설명 |
---|---|
clientId |
portal.azure.com에 등록된 애플리케이션의 ID |
authority |
Microsoft ID 플랫폼입니다. 대부분의 경우 이것은 https://login.microsoftonline.com/common 이 될 것입니다. |
redirectUri |
애플리케이션의 리디렉션 URI입니다. 기본값 또는 사용자 지정 리디렉션 URI를 사용하려면 'nil'을 전달할 수 있습니다. |
iOS 전용, 추가 앱 요구 사항
앱에는 AppDelegate
에 다음 항목도 포함되어야 합니다. 이렇게 하면 인증을 수행할 때 MSAL SDK가 인증 브로커 앱의 토큰 응답을 처리할 수 있습니다.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
메모
iOS 13 이상에서는 UIApplicationDelegate
대신 UISceneDelegate
채택하는 경우 이 코드를 대신 scene:openURLContexts:
콜백에 배치합니다(Apple 설명서참조).
이전 iOS와의 호환성을 위해 UISceneDelegate와 UIApplicationDelegate를 모두 지원하는 경우 MSAL 콜백을 두 위치에 모두 배치해야 합니다.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
마지막으로 앱의 Info.plist에 CFBundleURLTypes
와 함께 LSApplicationQueriesSchemes
항목이 있어야 합니다. 샘플에는 이 내용이 포함되어 있습니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
사용자 &은(는) 요청 토큰에 로그인합니다.
MSAL에는 토큰을 획득하는 데 사용되는 두 가지 메서드인 acquireToken
및 acquireTokenSilent
.
acquireToken: 대화형으로 토큰 가져오기
일부 상황에서는 사용자가 Microsoft ID 플랫폼과 상호 작용해야 합니다. 이러한 경우 최종 사용자는 자신의 계정을 선택하거나, 자격 증명을 입력하거나, 앱의 권한에 동의해야 할 수 있습니다. 예를 들어
- 사용자가 애플리케이션에 처음 로그인할 때
- 사용자가 암호를 재설정하는 경우 자격 증명을 입력해야 합니다.
- 애플리케이션이 처음으로 리소스에 대한 액세스를 요청하는 경우
- MFA 또는 기타 조건부 액세스 정책이 필요한 경우
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
어디: | 묘사 |
---|---|
scopes |
요청되는 범위(즉, Microsoft Graph의 경우 [ "user.read" ] 또는 사용자 지정 웹 API에 대한 [ "<Application ID URL>/scope" ] (api://<Application ID>/access_as_user )를 포함합니다. |
acquireTokenSilent: 조용히 액세스 토큰 가져오기
앱은 사용자가 토큰을 요청할 때마다 로그인할 필요가 없습니다. 사용자가 이미 로그인한 경우 이 메서드를 사용하면 앱에서 토큰을 자동으로 요청할 수 있습니다.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
어디: | 설명 |
---|---|
scopes |
요청되는 범위(즉, Microsoft Graph의 경우 [ "user.read" ] 또는 사용자 지정 웹 API에 대한 [ "<Application ID URL>/scope" ] (api://<Application ID>/access_as_user )를 포함합니다. |
account |
토큰이 요청되는 계정입니다. 퀵스타트는 단일 계정 애플리케이션에 관한 것입니다. 다중 계정 앱을 빌드하려면 accountsFromDeviceForParameters:completionBlock: 사용하여 올바른 accountIdentifier 전달하여 토큰 요청에 사용할 계정을 식별하는 논리를 정의해야 합니다. |
도움말 및 지원
도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한도움말 및 지원을 참조하세요.
다음 단계
Microsoft ID 플랫폼에서 액세스 토큰을 가져오고 이를 사용하여 Microsoft Graph API를 호출하는 iOS 또는 macOS 앱을 빌드하는 단계별 자습서로 이동합니다.