适用于 iOS 和 macOS 的 Microsoft 身份验证库

文档 代码示例 库参考 支持 反馈
MSAL iOS 和 macOS 文档 Microsoft Entra ID (员工示例)
Microsoft Entra External ID (客户示例)
SDK 参考 获取支持 反馈

适用于 iOS 和 macOS 的 Microsoft 身份验证库 (MSAL) 是一个身份验证 SDK,可用于使用行业标准 OAuth2 和 OpenID Connect 将身份验证无缝集成到你的应用中。 它允许你使用 Microsoft 标识登录用户或应用。 这些标识包括 Microsoft Entra ID 工作和学校帐户、个人 Microsoft 帐户、社交帐户和客户帐户。

使用适用于 iOS 和 macOS 的 MSAL,你可以从 Microsoft 标识平台获取安全令牌,以便对用户进行身份验证并访问其应用程序的安全 Web API。 该库支持多种身份验证方案,例如单一登录 (SSO)、条件访问和中介身份验证。

MSAL 中的本机身份验证支持

MSAL iOS 和 macOS 还提供本机身份验证 API,允许应用程序在其应用程序中实现具有端到端可定制流程的本机体验。 通过本机身份验证,用户无需离开应用即可完成丰富的本机注册和登录过程。 本机身份验证功能适用于 External ID for customers上的移动 (iOS) 和桌面 (macOS) 应用。 建议始终使用最新版本的 SDK。

入门

若要在应用程序中使用 MSAL iOS 和 macOS,需要在 Microsoft Entra 管理中心注册应用程序并配置项目。 由于 SDK 支持浏览器委托和本机身份验证体验,请根据你的方案按照以下快速入门中的步骤进行操作。

从 ADAL Objective-C 迁移

适用于 Objective-C 的 Azure Active Directory 身份验证库 (ADAL) 已于 2023 年 6 月起弃用。请遵循 适用于 iOS 和 macOS 的 ADAL 到 MSAL 迁移指南,以避免使你的应用安全受到威胁。

快速示例

Swift

let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
let scopes = ["your-scope1-here", "your-scope2-here"]
        
if let application = try? MSALPublicClientApplication(configuration: config) {
            
	let viewController = ... // Pass a reference to the view controller that should be used when getting a token interactively
	let webviewParameters = MSALWebviewParameters(authPresentationViewController: viewController)
	
	let interactiveParameters = MSALInteractiveTokenParameters(scopes: scopes, webviewParameters: webviewParameters)
	application.acquireToken(with: interactiveParameters, completionBlock: { (result, error) in
                
	guard let authResult = result, error == nil else {
		print(error!.localizedDescription)
		return
	}
                
	// Get access token from result
	let accessToken = authResult.accessToken
                
	// You'll want to get the account identifier to retrieve and reuse the account for later acquireToken calls
	let accountIdentifier = authResult.account.identifier
	})
}
else {
	print("Unable to create application.")
}

Objective-C

NSError *msalError = nil;
    
MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
NSArray<NSString *> *scopes = @[@"your-scope1-here", @"your-scope2-here"];
    
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
    
MSALViewController *viewController = ...; // Pass a reference to the view controller that should be used when getting a token interactively
MSALWebviewParameters *webParameters = [[MSALWebviewParameters alloc] initWithAuthPresentationViewController:viewController];
    
MSALInteractiveTokenParameters *interactiveParams = [[MSALInteractiveTokenParameters alloc] initWithScopes:scopes webviewParameters:webParameters];
[application acquireTokenWithParameters:interactiveParams completionBlock:^(MSALResult *result, NSError *error) {
    if (!error)
    {
        // You'll want to get the account identifier to retrieve and reuse the account
        // for later acquireToken calls
        NSString *accountIdentifier = result.account.identifier;
            
        NSString *accessToken = result.accessToken;
    }
    else
    {
        // Check the error
    }
}];

主分支弃用

主分支已复制到主分支。主分支将仅包含版本 1.2.14 之前的更新,对于进一步的版本,请参考“main”分支而不是“master”。

安装

使用 CocoaPods

对于浏览器委托的身份验证

你可以使用 CocoaPods 通过将其添加到目标下的 Podfile 中来安装 MSAL

use_frameworks!
 
target 'your-target-here' do
	pod 'MSAL'
end

对于本机身份验证

若要在 iOS 或 macOS 应用程序中使用 MSAL 提供的本机身份验证功能,你需要将 native-auth 指定为 MSAL 依赖项的子规范,如下所示

use_frameworks!
 
target 'your-target-here' do
	pod 'MSAL/native-auth'
end

注意:如果你使用的是 native-auth 子规范,则必须在 Podfile 中包含 use_frameworks! 设置。

使用 Carthage

你可以使用 Carthage 通过将其添加到 Cartfile 中来安装 MSAL

github "AzureAD/microsoft-authentication-library-for-objc" "main"

使用 Swift Packages

你可以将 MSAL 添加为 swift package dependency。 对于 MSAL 版本 1.1.14 及更高版本,MSAL 二进制框架的分发可用作 Swift 包。

  1. 对于 Xcode 中的项目,单击“文件”→“Swift Packages”→“添加 Package Dependency...”
  2. 选择要添加依赖项的项目
  3. 输入:https://github.com/AzureAD/microsoft-authentication-library-for-objc 作为包存储库 URL
  4. 使用以下项选择包选项:
    1. 规则 → 分支:main(对于最新的 MSAL 版本)
    2. 规则 → 版本 → 准确:[发行版本 >= 1.1.14](对于特定发行版本)

如有任何问题,请检查是否存在未解决的 SPM/Xcode 错误。 我们遇到的某些错误的解决方法

手动

如果选择将 MSAL for iOS 和 macOS 手动集成到 Xcode 项目中,请按照官方文档中关于如何 将包依赖项添加到应用程序 的指导进行操作。

使用 Git 子模块

如果你的项目在 git 仓库中管理,你可以将 MSAL 作为 git 子模块包含在内。 首先查看 GitHub Releases Page 获取最新的发布标签。 将 <latest_release_tag> 替换为该版本。

后续步骤

安装后,请按照 Microsoft Learn 上的官方 MSAL iOS 和 macOS 文档 完成以下步骤

有关常见用法模式、错误处理和调试、日志记录、遥测和其他库功能的详细信息,请参阅官方 MSAL iOS 和 macOS 文档

支持的版本

iOS - MSAL 支持 iOS 14 及更高版本。

macOS - MSAL 支持 macOS (OSX) 10.15 及更高版本。

社区帮助和支持

我们使用 Stack Overflow 与社区一起提供支持。 我们强烈建议你首先在 Stack Overflow 上提出问题,并浏览现有问题以查看是否有人之前问过你的问题。

如果你发现错误或有功能请求,请在 GitHub Issues 上提出问题。

要提供建议,请访问我们的 User Voice 页面

提交反馈

我们希望了解你对该库的看法。 请完成这份简短的调查问卷。

贡献

我们热烈欢迎贡献和反馈。 你可以克隆 repo 并立即开始贡献。

本项目已采用 Microsoft 开源行为准则。 有关详细信息,请参阅 行为准则 FAQ 或联系 opencode@microsoft.com 以提出任何其他问题或评论。

安全库

该库控制用户如何登录和访问服务。 我们建议你尽可能在你的应用中使用我们库的最新版本。 我们使用 语义化版本,因此你可以控制与更新应用相关的风险。 例如,始终下载最新的次要版本号(例如 x.y.x)可确保你获得最新的安全和功能增强,但我们的 API 表面保持不变。 你始终可以在 GitHub 的“发布”选项卡下查看最新版本和发行说明。

安全报告

如果你发现我们的库或服务存在安全问题,请尽可能详细地报告给 secure@microsoft.com。 你的提交可能有资格通过 Microsoft Bounty 计划获得赏金。 请不要将安全问题发布到 GitHub Issues 或任何其他公共站点。 收到信息后,我们将尽快与你联系。 我们鼓励你访问 此页面 并订阅“安全建议警报”,以便获取安全事件发生时的通知。

许可证

版权所有 © Microsoft Corporation。 保留所有权利。 根据 MIT 许可证(“许可证”)获得许可。