适用于 iOS 和 macOS 的 Microsoft 身份验证库 (MSAL)是一种身份验证 SDK,可用于使用行业标准 OAuth2 和 OpenID Connect 将身份验证无缝集成到应用中。 它允许使用Microsoft标识登录用户或应用。 这些标识包括Microsoft Entra ID工作和学校帐户、个人Microsoft帐户、社交帐户和客户帐户。
使用适用于 iOS 和 macOS 的 MSAL,可以从Microsoft 标识平台获取安全令牌,以便对用户进行身份验证并访问其应用程序的安全 Web API。 该库支持多种身份验证方案,例如单一登录(SSO)、条件访问和中转身份验证。
MSAL 中的原生身份验证支持
MSAL iOS 提供原生身份验证 API,使应用程序能够通过端到端可自定义的流程在其移动应用中实现原生体验。 使用本机身份验证时,用户无需离开应用即可完成丰富的本机移动优先注册和登录旅程。 本机身份验证功能仅适用于 客户外部 ID 上的移动应用。 不支持 macOS。 建议始终使用最新版本的 SDK。
适用于 iOS 和 macOS 的 MSAL 概念文档入门
MSAL 文档涵盖了常见模式、错误处理和调试最佳实践、库的其他功能(例如日志记录和遥测),以及任何当前存在的 Bug 或具有已知缓解措施的常见问题。 如果你正在寻找有关 Microsoft Entra ID 和 Microsoft 帐户的更多入门帮助,请参阅 Microsoft 标识平台文档。如果你想了解有关 Microsoft Graph API 的更多信息,请参阅 Microsoft Graph 文档。为了有效使用适用于 iOS 和 macOS 的 MSAL 来保护应用程序,务必熟悉以下概念:
- 了解适用于 iOS 和 macOS 的 MSAL 之间的差异
- 在 Microsoft Entra 中注册应用
- 安装适用于 iOS 和 macOS 的 MSAL 并配置项目以使用该库
- 获取令牌 以访问受保护的 API
若要在应用程序中使用 MSAL iOS 和 macOS,需要在Microsoft Entra管理中心注册应用程序并配置项目。 由于 SDK 同时支持浏览器委托式身份验证体验和原生身份验证体验,因此请根据你的具体场景,按照这些快速入门之一中的步骤进行操作。
有关浏览器委托身份验证方案,请参阅快速入门《让用户登录,并从 iOS 或 macOS 应用调用 Microsoft Graph》。
有关 iOS 应用中的本机身份验证方案,请参阅Microsoft Entra 外部 ID示例指南“运行 iOS 示例应用”。
支持的版本
iOS - MSAL 支持 iOS 14 及更高版本。
macOS - MSAL 支持 macOS (OSX) 10.13 及更高版本。
iOS 和 macOS 版 Microsoft 身份验证库之间的主要差异
本部分介绍 iOS 和 macOS Microsoft 身份验证库(MSAL)之间的功能差异。
注释
在 Mac 上,MSAL 仅支持 macOS 应用。
一般差异
适用于 macOS 的 MSAL 是 iOS 可用的功能的子集。
适用于 macOS 的 MSAL 不支持:
- 不同的浏览器类型,例如
ASWebAuthenticationSession,SFAuthenticationSessionSFSafariViewController。 - macOS 不支持通过 Microsoft Authenticator 应用进行中转身份验证。
来自同一发布服务器的应用之间的密钥链共享在 macOS 10.14 及更早版本上更加有限。 使用 访问控制列表 指定应共享密钥链的应用的路径。 用户可能会看到其他密钥链提示。
在 macOS 10.15+ 上,MSAL 的行为在 iOS 和 macOS 之间是相同的。 MSAL 使用 密钥链访问组 进行密钥链共享。
条件访问身份验证
对于条件访问方案,使用适用于 iOS 的 MSAL 时,用户提示将减少。 这是因为 iOS 使用代理应用(Microsoft Authenticator),因此在某些情况下无需提示用户。
项目设置
macOS
- 在 macOS 上设置项目时,请确保应用程序使用有效的开发或生产证书进行签名。 MSAL 仍以未签名模式工作,但它在缓存持久性方面的行为会有所不同。 该应用仅应出于调试目的以未签名方式运行。 如果分发未签名的应用,则会:
- 在 10.14 及更早版本上,MSAL 会在每次重启应用时提示用户输入密钥链密码。
- 在 10.15+ 上,MSAL 会提示用户输入每次获取令牌的凭据。
- macOS 应用不需要实现 AppDelegate 调用。
iOS
- 要使项目支持身份验证代理流,还需要执行其他步骤。 本教程中将介绍这些步骤。
- iOS 项目需要在 info.plist 中注册自定义方案。 macOS 上不需要此操作。
从Azure Active Directory身份验证库迁移 (ADAL)
Objective-C 的Azure Active Directory身份验证库(ADAL)已于 2023 年 6 月 30 日弃用。 如果你或你的组织正在使用Azure Active Directory身份验证库 (ADAL),则应迁移到 MSAL,以避免将应用的安全性置于危险之中。
Samples
请参阅 我们的综合示例列表。
获取有关 SDK 的帮助
如果对 MSAL SDK 有疑问,请在文档中发现错误或需要建议,请创建包含详细信息的 Github 问题 。