教學課程:準備 iOS/macOS 應用程式以進行原生驗證
適用於:白色圓圈中帶有灰色 X 符號 勞動力租戶
外部租戶(了解更多)
本教學課程示範如何將Microsoft驗證連結庫 (MSAL) 原生驗證 SDK 架構新增至 iOS/macOS Swift 應用程式。
在本教學課程中,您將瞭解如何:
- 將 MSAL 架構新增至 iOS/macOS 應用程式。
- 建立 SDK 實例。
先決條件
- Xcode
- 如果您尚未這麼做,請依照 使用原生驗證 在外部租用戶中註冊應用程式,在範例 iOS(Swift) 行動應用程式中登入使用者的指示作。 請確定您完成下列步驟:
- 註冊應用程式。
- 啟用公用用戶端和原生驗證流程。
- 授與 API 許可權。
- 建立使用者流程。
- 將應用程式與使用者流程產生關聯。
- iOS/macOS 專案
將 MSAL 架構新增至 iOS/macOS 應用程式
- 在 Xcode 中開啟您的 iOS/macOS 專案。
- 從 [檔案] 功能選取 [[新增套件相依性...]。
- 輸入
https://github.com/AzureAD/microsoft-authentication-library-for-objc
作為套件 URL,然後選擇 新增套件。 - 將新的金鑰鏈群組新增至您的專案 功能。 在 iOS 上使用
com.microsoft.adalcache
,並在 macOS 上使用com.microsoft.identity.universalstorage
。
如需將 MSAL 新增至專案的詳細資訊和其他機制,請參閱 專案自述檔。
建立 SDK 實例
藉由在
ViewController
類別頂端新增import MSAL
,將 MSAL 程式庫匯入至您的檢視控制器中。將
nativeAuth
成員變數新增至ViewController
類別,方法是在viewDidLoad()
函式之前新增下列程式代碼:var nativeAuth: MSALNativeAuthPublicClientApplication!
接下來,將下列程式代碼新增至
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)") }
將下列值取代為來自 Microsoft Entra 系統管理中心的值:
尋找
Enter_the_Application_Id_Here
值,並將它取代為您稍早註冊之應用程式的 應用程式(用戶端)識別碼。尋找
Enter_the_Tenant_Subdomain_Here
,並將它取代為 Directory (tenant) 子域。 例如,如果您的租戶主要網域是contoso.onmicrosoft.com
,請使用contoso
。 如果您沒有目錄(租戶)子網域,請瞭解如何 閱讀租戶詳細資料。挑戰類型是值清單,應用程式會用來通知Microsoft Entra 其支援的驗證方法。
- 若要使用電子郵件單次密碼註冊和登入流程,請使用
[.OOB]
。 - 若要使用電子郵件和密碼註冊和登入流程,請使用
[.OOB, .password]
。 - 針對自助式密碼重設 (SSPR),請使用
[.OOB]
。
挑戰類型深入瞭解。
- 若要使用電子郵件單次密碼註冊和登入流程,請使用
若要建置,請在專案的工具列中選取 [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 中的日誌。