文档 | 代码示例 | 库参考 | 支持 | 反馈 |
---|---|---|---|---|
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 iOS 和 macOS 还提供本机身份验证 API,允许应用程序在其应用程序中实现具有端到端可定制流程的本机体验。 通过本机身份验证,用户无需离开应用即可完成丰富的本机注册和登录过程。 本机身份验证功能适用于 External ID for customers上的移动 (iOS) 和桌面 (macOS) 应用。 建议始终使用最新版本的 SDK。
若要在应用程序中使用 MSAL iOS 和 macOS,需要在 Microsoft Entra 管理中心注册应用程序并配置项目。 由于 SDK 支持浏览器委托和本机身份验证体验,请根据你的方案按照以下快速入门中的步骤进行操作。
对于浏览器委托的身份验证方案,请参阅快速入门:从 iOS 或 macOS 应用登录用户并调用 Microsoft Graph。
对于本机身份验证方案,请参阅 Microsoft Entra External ID 示例指南,适用于 iOS 示例应用 或 macOS 示例应用
适用于 Objective-C 的 Azure Active Directory 身份验证库 (ADAL) 已于 2023 年 6 月起弃用。请遵循 适用于 iOS 和 macOS 的 ADAL 到 MSAL 迁移指南,以避免使你的应用安全受到威胁。
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.")
}
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 通过将其添加到目标下的 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 通过将其添加到 Cartfile
中来安装 MSAL
github "AzureAD/microsoft-authentication-library-for-objc" "main"
你可以将 MSAL
添加为 swift package dependency。 对于 MSAL 版本 1.1.14 及更高版本,MSAL 二进制框架的分发可用作 Swift 包。
如有任何问题,请检查是否存在未解决的 SPM/Xcode 错误。 我们遇到的某些错误的解决方法
如果选择将 MSAL for iOS 和 macOS 手动集成到 Xcode 项目中,请按照官方文档中关于如何 将包依赖项添加到应用程序 的指导进行操作。
如果你的项目在 git 仓库中管理,你可以将 MSAL 作为 git 子模块包含在内。 首先查看 GitHub Releases Page 获取最新的发布标签。 将 <latest_release_tag> 替换为该版本。
git submodule add https://github.com/AzureAD/microsoft-authentication-library-for-objc msal
cd msal
git checkout tags/<latest_release_tag>
git submodule update --init --recursive
cd ..
git add msal
git commit -m "Use MSAL git submodule at <latest_release_tag>"
git push
安装后,请按照 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 许可证(“许可证”)获得许可。