다음을 통해 공유


빠른 시작: iOS 또는 macOS 앱에서 사용자 로그인 및 Microsoft Graph 호출

이 빠른 시작에서는 네이티브 iOS 또는 macOS 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출하는 액세스 토큰을 가져오는 방법을 보여 주는 코드 샘플을 다운로드하고 실행합니다.

빠른 시작은 iOS 및 macOS 앱 모두에 적용됩니다. 일부 단계는 iOS 앱에만 필요하며 다음과 같이 표시됩니다.

필수 구성 요소

  • 활성 구독이 있는 Azure 계정입니다. 계정을 무료로만드세요.
  • XCode 10 이상
  • iOS 10 이상
  • macOS 10.12 이상

샘플 작동 방식

이 빠른 시작에서 생성된 샘플 앱의 작동 방식을 보여 주는 다이어그램

빠른 시작 앱 등록

애플리케이션을 등록하고 앱의 등록 정보를 솔루션에 수동으로 추가하려면 다음 단계를 수행합니다.

  1. 최소한 애플리케이션 개발자역할로 Microsoft Entra 관리 센터에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
  3. 아이덴티티>애플리케이션>앱 등록탐색합니다.
  4. 새 등록선택합니다.
  5. 애플리케이션에 대한 이름을 입력합니다. 앱 사용자에게 이 이름이 표시될 수 있으며 나중에 변경할 수 있습니다.
  6. 등록선택합니다.
  7. 관리아래에서, 인증을 선택한 다음>플랫폼 추가에서>iOS을 추가합니다.
  8. 애플리케이션에 대한 번들 식별자 입력합니다. 번들 식별자는 애플리케이션을 고유하게 식별하는 고유 문자열입니다(예: com.<yourname>.identitysample.MSALMacOS). 사용하는 값을 기록해 둡다. iOS 구성은 macOS 애플리케이션에도 적용됩니다.
  9. 구성을 선택하고 이 빠른 시작의 뒷부분에서 MSAL 구성 세부 정보를 저장합니다.
  10. 완료선택합니다.

2단계: 샘플 프로젝트 다운로드

  • iOS 대한 코드 샘플 다운로드
  • macOS 대한 코드 샘플 다운로드

3단계: 종속성 설치

  1. zip 파일을 추출합니다.
  2. 터미널 창에서 다운로드한 코드 샘플이 있는 폴더로 이동하고 pod install 실행하여 최신 MSAL 라이브러리를 설치합니다.

4단계: 프로젝트 구성

위의 옵션 1을 선택한 경우 다음 단계를 건너뛸 수 있습니다.

  1. XCode에서 프로젝트를 엽니다.

  2. ViewController.swift 편집하고 'let kClientID'로 시작하는 줄을 다음 코드 조각으로 바꿉니다. 이 빠른 시작의 앞부분에서 앱을 등록할 때 저장한 clientID로 kClientID 값을 업데이트해야 합니다.

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Microsoft Entra 국가별 클라우드를위한 앱을 빌드하는 경우 'let kGraphEndpoint'와 'let kAuthority'로 시작하는 줄을 올바른 엔드포인트로 바꿉니다. 전역 액세스의 경우 기본값을 사용합니다.

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. 다른 엔드포인트는 여기에 문서화되어 있습니다. 예를 들어 Microsoft Entra Germany에서 빠른 시작을 실행하려면 다음을 사용합니다.

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. 프로젝트 설정을 엽니다. ID 섹션에서 번들 식별자입력합니다.

  6. Info.plist 마우스 오른쪽 버튼으로 클릭한 후 >열기 소스 코드로를 선택합니다.

  7. dict 루트 노드에서 포털에서 사용한 번들 IDEnter_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>
    
  8. 앱을 빌드하고 실행합니다.

추가 정보

이 빠른 시작에 대해 자세히 알아보려면 다음 섹션을 참조하세요.

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.plistCFBundleURLTypes와 함께 LSApplicationQueriesSchemes 항목이 있어야 합니다. 샘플에는 이 내용이 포함되어 있습니다.

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>msauthv2</string>
   <string>msauthv3</string>
</array>

사용자 &은(는) 요청 토큰에 로그인합니다.

MSAL에는 토큰을 획득하는 데 사용되는 두 가지 메서드인 acquireTokenacquireTokenSilent.

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 앱을 빌드하는 단계별 자습서로 이동합니다.