共用方式為


教學課程:準備 iOS/macOS 應用程式以進行原生驗證

適用於:白色圓圈中帶有灰色 X 符號 。 勞動力租戶 綠色圓帶白色對勾符號。 外部租戶(了解更多

本教學課程示範如何將Microsoft驗證連結庫 (MSAL) 原生驗證 SDK 架構新增至 iOS/macOS Swift 應用程式。

在本教學課程中,您將瞭解如何:

  • 將 MSAL 架構新增至 iOS/macOS 應用程式。
  • 建立 SDK 實例。

先決條件

  • Xcode
  • 如果您尚未這麼做,請依照 使用原生驗證 在外部租用戶中註冊應用程式,在範例 iOS(Swift) 行動應用程式中登入使用者的指示作。 請確定您完成下列步驟:
    • 註冊應用程式。
    • 啟用公用用戶端和原生驗證流程。
    • 授與 API 許可權。
    • 建立使用者流程。
    • 將應用程式與使用者流程產生關聯。
  • iOS/macOS 專案

將 MSAL 架構新增至 iOS/macOS 應用程式

  1. 在 Xcode 中開啟您的 iOS/macOS 專案。
  2. 從 [檔案] 功能選取 [[新增套件相依性...]
  3. 輸入 https://github.com/AzureAD/microsoft-authentication-library-for-objc 作為套件 URL,然後選擇 新增套件
  4. 將新的金鑰鏈群組新增至您的專案 功能。 在 iOS 上使用 com.microsoft.adalcache,並在 macOS 上使用 com.microsoft.identity.universalstorage

如需將 MSAL 新增至專案的詳細資訊和其他機制,請參閱 專案自述檔

建立 SDK 實例

  1. 藉由在 ViewController 類別頂端新增 import MSAL,將 MSAL 程式庫匯入至您的檢視控制器中。

  2. nativeAuth 成員變數新增至 ViewController 類別,方法是在 viewDidLoad() 函式之前新增下列程式代碼:

    var nativeAuth: MSALNativeAuthPublicClientApplication!
    
  3. 接下來,將下列程式代碼新增至 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)")
     }
    
  4. 將下列值取代為來自 Microsoft Entra 系統管理中心的值:

    1. 尋找 Enter_the_Application_Id_Here 值,並將它取代為您稍早註冊之應用程式的 應用程式(用戶端)識別碼

    2. 尋找 Enter_the_Tenant_Subdomain_Here,並將它取代為 Directory (tenant) 子域。 例如,如果您的租戶主要網域是 contoso.onmicrosoft.com,請使用 contoso。 如果您沒有目錄(租戶)子網域,請瞭解如何 閱讀租戶詳細資料

      挑戰類型是值清單,應用程式會用來通知Microsoft Entra 其支援的驗證方法。

      • 若要使用電子郵件單次密碼註冊和登入流程,請使用 [.OOB]
      • 若要使用電子郵件和密碼註冊和登入流程,請使用 [.OOB, .password]
      • 針對自助式密碼重設 (SSPR),請使用 [.OOB]

      挑戰類型深入瞭解。

  5. 若要建置,請在專案的工具列中選取 [Product>Build]。

選擇性:記錄設定

MSAL 提供記錄 API,可讓您用來啟用和設定記錄。 若要查看 MSAL 的所有偵錯輸出,請在 viewDidLoad() 函式開頭新增下列程式代碼:

MSALGlobalConfig.loggerConfig.logLevel = .verbose
MSALGlobalConfig.loggerConfig.setLogCallback { logLevel, message, containsPII in
   if !containsPII {
      print("MSAL: \(message ?? "")")
   }
}

這會從 MSAL 輸出所有偵錯記錄,這有助於診斷問題,並瞭解原生驗證流程的運作方式。 若要深入了解如何設定日誌層級及其最佳實踐,請參閱 MSAL 在 iOS/macOS 中的日誌

下一步