教程:准备 iOS (Swift) 应用进行身份验证
这是本教程系列中的第二个教程,演示了如何将适用于 iOS 和 macOS 的 Microsoft 身份验证库 (MSAL) 添加到 iOS Swift 应用。
在本教程中,你将:
- 将 MSAL 框架添加到 iOS (Swift) 应用。
- 创建 SDK 实例。
先决条件
- Xcode.
- 请按照教程:注册并配置 iOS (Swift) 移动应用中的说明操作并在外部租户中注册应用(如果尚未这样做)。 请确保完成以下步骤:
- 注册应用程序。
- 添加平台重定向 URL。
- 启用公共客户端流。
- Microsoft Graph 的委托权限。
- iOS (Swift) 项目。
将 MSAL 框架添加到 iOS (Swift) 应用
MSAL 身份验证 SDK 用于使用标准 OAuth2 和 OpenID Connect 将身份验证集成到应用中。 它允许使用 Microsoft 标识登录用户或应用。 要将 MSAL 添加到 iOS (Swift) 项目,请执行以下步骤:
- 在 Xcode 中打开 iOS 项目。
- 从“文件”菜单中选择“添加包依赖项...”。
- 输入
https://github.com/AzureAD/microsoft-authentication-library-for-objc
作为包 URL,然后选择“添加包”
更新捆绑标识符
在 Apple 生态系统中,捆绑标识符是应用程序的唯一标识符。 要在项目中更新捆绑标识符,请执行以下步骤:
打开项目设置。 在“标识”部分输“捆绑标识符”。
右键单击“Info.plist”,然后选择“打开为”>“源代码”。
在 dict 根节点下,将
Enter_the_bundle_Id_Here
替换为你在门户中使用的捆绑 ID。 请注意字符串中的msauth.
前缀。<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
创建 SDK 实例
要在项目中创建 MSAL 实例,请执行以下步骤:
通过在
ViewController
类顶部添加import MSAL
,将 MSAL 库导入视图控制器。通过在
viewDidLoad()
函数前面添加以下代码,将applicationContext
成员变量添加到 ViewController 类:var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
代码声明两个变量:
applicationContext
(存储MSALPublicClientApplication
的实例)和webViewParameters
(存储MSALWebviewParameters
的实例)。MSALPublicClientApplication
是由 MSAL 提供的类,用于处理公共客户端应用程序。MSALWebviewParameters
是由 MSAL 提供的类,用于定义用于配置身份验证过程中使用的 Web 视图的参数。将以下代码添加到视图
viewDidLoad()
函数:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
代码尝试初始化 MSAL,处理过程中发生的任何错误。 如果发生错误,它会使用错误的详细信息更新日志记录。
添加以下代码,用于创建初始化 MSAL 的
initMSAL()
函数:func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
此代码初始化适用于 iOS 的 MSAL。 它首先尝试使用提供的Configuration.kAuthority字符串为颁发机构创建 URL。 如果成功,它会基于该 URL 创建 MSAL 颁发机构对象。 然后,它使用给定的客户端 ID、重定向 URI 和颁发机构配置
MSALPublicClientApplication
。 如果已正确设置所有配置,则会使用配置的MSALPublicClientApplication
初始化应用程序上下文。 如果过程中发生任何错误,则会引发错误。创建Configuration.swift文件并添加以下配置:
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
此 Swift 配置代码定义了名为
Configuration
的类,并用@objcMembers
标记。 它包括与身份验证设置相关的各种配置参数的静态常量。 这些参数包括租户子域、客户端 ID、重定向 URI、受保护的 API 终结点以及范围。 这些配置常量应使用特定于应用程序的设置的适当值进行更新。查找占位符:
- 查找
Enter_the_Application_Id_Here
并将其替换为之前注册的应用的应用程序(客户端)ID。 Enter_the_Redirect_URI_Here
并将其替换为之前在添加平台重定向 URL 时下载的 MSAL 配置文件中kRedirectUri的值。Enter_the_Protected_API_Scopes_Here
并将其替换为前面记录的范围。 如果尚未记录任何范围,可以将此范围列表留空。Enter_the_Tenant_Subdomain_Here
并将其替换为目录(租户)子域。 例如,如果租户主域为contoso.onmicrosoft.com
,请使用contoso
。 如果不知道租户子域,请了解如何读取租户详细信息。
- 查找
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈