환영합니다! 아마도 기대했던 페이지는 아닐 것입니다. 수정 작업을 진행하는 동안 이 링크를 통해 올바른 문서로 이동해야 합니다.
이 문제를 해결하는 동안 불편을 끼쳐 드려 죄송하며 양해해 주셔서 감사합니다.
이 빠른 시작에서는 네이티브 iOS 또는 macOS 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출하는 액세스 토큰을 가져오는 방법을 보여 주는 코드 샘플을 다운로드하고 실행합니다.
빠른 시작은 iOS 및 macOS 앱 모두에 적용됩니다. 일부 단계는 iOS 앱에만 필요하며 다음과 같이 표시됩니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로계정을 만드세요.
- XCode 10 이상
- iOS 10 이상
- macOS 10.12 이상
샘플 작동 방식
1단계: 애플리케이션 구성
이 빠른 시작에 대한 코드 샘플이 작동하려면 인증 broker와 호환되는 리디렉션 URI를 추가합니다.
이러한 특성을 사용하여 애플리케이션을 구성합니다.
2단계: 샘플 프로젝트 다운로드
iOS 대한 코드 샘플 다운로드
macOS 대한 코드 샘플 다운로드
3단계: 종속성 설치
- zip 파일을 추출합니다.
- 터미널 창에서 다운로드한 코드 샘플이 있는 폴더로 이동하고
pod install
실행하여 최신 MSAL 라이브러리를 설치합니다.
4단계: 앱이 구성되고 실행할 준비가 됨
앱 속성 값을 사용하여 프로젝트를 구성했고 실행할 준비가 되었습니다.
비고
Enter_the_Supported_Account_Info_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 이상에서는 UISceneDelegate
대신 UIApplicationDelegate
채택하는 경우 이 코드를 대신 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)
}
마지막으로 앱의 LSApplicationQueriesSchemes
에 와 함께 CFBundleURLTypes
항목이 있어야 합니다. 샘플에는 이 내용이 포함되어 있습니다.
<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.webViewParameters!)
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 앱을 빌드하는 단계별 자습서로 이동합니다.