教程:准备 iOS/macOS 应用进行本机身份验证
适用于:iOS (Swift) macOS (Swift)
本教程演示如何将 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 库导入视图控制器。通过在
viewDidLoad()
函数前面添加以下代码,将nativeAuth
成员变量添加到ViewController
类: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
值,并将其替换为之前注册的应用的应用程序(客户端)ID。查找
Enter_the_Tenant_Subdomain_Here
并将其替换为目录(租户)子域。 例如,如果租户主域为contoso.onmicrosoft.com
,请使用contoso
。 如果没有目录(租户)子域,请了解如何读取租户详细信息。质询类型是值列表,应用使用其来通知 Microsoft Entra 有关其支持的身份验证方法。
- 对于使用电子邮件一次性密码的注册和登录流,请使用
[.OOB]
。 - 对于使用电子邮件和密码的注册和登录流,请使用
[.OOB, .password]
。 - 对于自助式密码重置 (SSPR),请使用
[.OOB]
。
详细了解质询类型。
- 对于使用电子邮件一次性密码的注册和登录流,请使用
若要生成,请在项目的工具栏中选择“产品”>“生成”。
可选:日志记录配置
MSAL 提供了一个日志记录 API,可用于启用和配置日志记录。 若要查看来自 MSAL 的所有调试输出,请在 viewDidLoad()
函数的开头添加以下代码:
MSALGlobalConfig.loggerConfig.logLevel = .verbose
MSALGlobalConfig.loggerConfig.setLogCallback { logLevel, message, containsPII in
if !containsPII {
print("MSAL: \(message ?? "")")
}
}
这会输出来自 MSAL 的所有调试日志,这有助于诊断问题并了解本机身份验证流的工作原理。 若要详细了解如何配置日志级别和最佳做法,请参阅 MSAL for iOS/macOS 中的日志记录。