适用于 Apple 设备的 Microsoft 企业 SSO 插件

借助适用于 Apple 设备的 Microsoft 企业 SSO 插件,macOS、iOS 和 iPadOS 上的 Microsoft Entra 帐户可在支持 Apple 企业单一登录功能的所有应用程序上进行单一登录 (SSO)。 该插件可为你的企业可能依赖但尚未支持最新标识库或协议的较旧应用程序提供 SSO。 此插件是在 Microsoft 与 Apple 的密切合作下开发的,可以提高应用程序的可用性,同时提供可用的最佳保护。

企业 SSO 插件目前是下列应用中的内置功能:

功能

适用于 Apple 设备的 Microsoft 企业 SSO 插件具有以下优势:

  • 可为支持 Apple 企业 SSO 功能的所有应用程序中的 Microsoft Entra 帐户提供 SSO。
  • 它可由任何移动设备管理 (MDM) 解决方案启用,并在设备和用户注册中受支持。
  • 它将 SSO 扩展到尚未使用 Microsoft 身份验证库 (MSAL) 的应用程序。
  • 将 SSO 扩展到使用 OAuth 2、OpenID Connect 和 SAML 的应用程序。
  • 它与 MSAL 本机集成,在启用 Microsoft 企业 SSO 插件时,MSAL 可为最终用户提供流畅的本机体验。

重要

2023 年 8 月,微软宣布 Entra ID 即将推出适用于 macOS 设备的平台 SSO。

由于这些功能仍在开发中,在 Entra ID 平台上尚不支持使用平台 SSO 功能。 这些功能发布公共预览版后,将提供有限的客户支持。

要求

若要使用适用于 Apple 设备的 Microsoft 企业 SSO 插件:

  • 设备必须支持且已安装具有适用于 Apple 设备的 Microsoft 企业 SSO 插件的应用
  • 设备必须在 MDM 中注册,例如通过 Microsoft Intune。
  • 必须将配置推送到设备,以启用企业 SSO 插件。 Apple 需要此安全约束。

iOS 要求

  • 必须在设备上安装 iOS 13.0 或更高版本。
  • 必须在设备上安装提供适用于 Apple 设备的 Microsoft 企业 SSO 插件的 Microsoft 应用程序。 此应用是 Microsoft Authenticator 应用

macOS 要求

  • 必须在设备上安装 macOS 10.15 或更高版本。
  • 必须在设备上安装提供适用于 Apple 设备的 Microsoft 企业 SSO 插件的 Microsoft 应用程序。 此应用是 Intune 公司门户应用

启用 SSO 插件

使用以下信息可通过 MDM 启用 SSO 插件。

Microsoft Intune 配置

如果使用 Microsoft Intune 作为 MDM 服务,则可使用内置配置文件设置来启用 Microsoft 企业 SSO 插件:

  1. 配置配置文件的 SSO 应用插件设置。
  2. 如果尚未分配配置文件,请将配置文件分配给用户或设备组

当每台设备下次向 Intune 签入,启用 SSO 插件的配置文件设置会自动应用于组的设备。

其他 MDM 服务的手动配置

如果不将 Intune 用于 MDM,可以为 Apple 设备配置可扩展单一登录配置文件有效负载。 使用以下参数来配置 Microsoft 企业 SSO 插件及其配置选项。

。iOS 设置:

  • 扩展 IDcom.microsoft.azureauthenticator.ssoextension
  • 团队 ID:iOS 不需要此字段。

macOS 设置:

  • 扩展 IDcom.microsoft.CompanyPortalMac.ssoextension
  • 团队 IDUBF8T346G9

通用设置:

  • 类型:重定向
    • https://login.microsoftonline.com
    • https://login.microsoft.com
    • https://sts.windows.net
    • https://login.partner.microsoftonline.cn
    • https://login.chinacloudapi.cn

部署指南

使用以下部署指南通过所选 MDM 解决方案启用 Microsoft 企业 SSO 插件:

Intune:

Jamf Pro:

其他 MDM:

更多配置选项

可以添加更多配置选项,将 SSO 功能扩展到其他应用。

为不使用 MSAL 的应用启用 SSO

借助 SSO 插件,任何应用程序都可以加入 SSO,即使它们不是使用 Microsoft SDK(例如 Microsoft 身份验证库 (MSAL))开发的也可以。

具有以下特征的设备会自动安装 SSO 插件:

  • 已在 iOS 或 iPadOS 上下载 Authenticator 应用,或已在 macOS 上下载 Intune 公司门户应用。
  • MDM 已向组织注册其设备。

组织可能会使用 Authenticator 应用来应对多重身份验证、无密码身份验证和条件访问等方案。 使用 MDM 提供程序可以为应用程序启用 SSO 插件。 Microsoft 可让你轻松使用 Microsoft Intune 来配置插件。 允许列表用于配置这些应用程序来使用 SSO 插件。

重要

Microsoft 企业 SSO 插件仅支持使用本机 Apple 网络技术或 Web 视图的应用。 它不支持提供自己的网络层实现的应用程序。

使用以下参数为不使用 MSAL 的应用配置 Microsoft 企业 SSO 插件。

重要

无需将使用 Microsoft 身份验证库的应用添加到此允许列表。 默认情况下,这些应用将参与 SSO。 大多数 Microsoft 生成的应用都使用 Microsoft 身份验证库。

为所有托管应用启用 SSO

  • 键:Enable_SSO_On_All_ManagedApps
  • 类型:
  • 值:1 或 0。 默认情况下,此值设置为 0。

如果启用此标志(将其值设置为 1),则不在 AppBlockList 中的所有 MDM 托管应用都可以参与 SSO。

为特定应用启用 SSO

  • 键:AppAllowList
  • 类型:String
  • 值:允许加入 SSO 的应用程序的应用程序捆绑包 ID 的逗号分隔列表。
  • 示例com.contoso.workapp, com.contoso.travelapp

注意

默认允许 Safari 和 Safari 视图服务参与 SSO。 可以通过在 AppBlockList 中添加 Safari 和 Safari 视图服务的捆绑 ID 将其配置为不参与 SSO。 iOS 捆绑 ID:[com.apple.mobilesafari、com.apple.SafariViewService] macOS 捆绑 ID:[com.apple.Safari]

为具有特定捆绑 ID 前缀的所有应用启用 SSO

  • 键:AppPrefixAllowList
  • 类型:String
  • 值:允许加入 SSO 的应用程序的应用程序包 ID 前缀的逗号分隔列表。 此参数会使所有以特定前缀开头的应用都可加入 SSO。 对于 iOS,默认值将设置为 com.apple.,这将为所有 Apple 应用启用 SSO。 对于 macOS,默认值将设置为 com.apple.com.microsoft.,这将为所有 Apple 和 Microsoft 应用启用 SSO。 管理员可以覆盖默认值或将应用添加到 AppBlockList,以防止它们参与 SSO。
  • 示例com.contoso., com.fabrikam.

为特定应用禁用 SSO

  • 键:AppBlockList
  • 类型:String
  • 值:不允许其参与 SSO 的应用程序的逗号分隔应用程序捆绑 ID 列表。
  • 示例com.contoso.studyapp, com.contoso.travelapp

若要为 Safari 或 Safari 视图服务禁用 SSO,必须通过将其捆绑 ID 添加到 AppBlockList 来显式禁用:

  • iOS:com.apple.mobilesafaricom.apple.SafariViewService
  • macOS:com.apple.Safari

对特定应用程序启用通过 Cookie 进行 SSO

为具有高级网络设置的某些 iOS 应用启用 SSO 时,这些应用可能会遇到意外的问题。 例如,可能有错误消息指出网络请求已取消或中断。

如果即使在你通过其他设置启用 SSO 之后,用户在登录到某个应用程序时也会遇到问题,请尝试将该应用程序添加到 AppCookieSSOAllowList 以解决问题。

  • 键:AppCookieSSOAllowList
  • 类型:String
  • 值:可加入 SSO 的应用程序的应用程序包 ID 前缀的逗号分隔列表。 以列出的前缀开头的所有应用都允许加入 SSO。
  • 示例com.contoso.myapp1, com.fabrikam.myapp2

其他要求:若要使用 AppCookieSSOAllowList 为应用程序启用 SSO,还必须添加其捆绑 ID 前缀 AppPrefixAllowList

请仅对发生意外登录失败的应用程序尝试此配置。 此密钥仅用于 iOS 应用,不适用于 macOS 应用。

键的摘要

类型
Enable_SSO_On_All_ManagedApps Integer 1 表示为所有托管应用启用 SSO,0 表示为所有托管应用禁用 SSO。
AppAllowList 字符串
(逗号分隔的列表)
允许其参与 SSO 的应用程序的捆绑 ID。
AppBlockList 字符串
(逗号分隔的列表)
不允许其参与 SSO 的应用程序的捆绑 ID。
AppPrefixAllowList 字符串
(逗号分隔的列表)
允许其参与 SSO 的应用程序的捆绑 ID 前缀。 对于 iOS,默认值将设置为 com.apple.,这将为所有 Apple 应用启用 SSO。 对于 macOS,默认值将设置为 com.apple.com.microsoft.,这将为所有 Apple 和 Microsoft 应用启用 SSO。 开发人员、客户或管理员可以覆盖默认值或将应用添加到 AppBlockList,以防止它们参与 SSO。
AppCookieSSOAllowList 字符串
(逗号分隔的列表)
允许其加入 SSO 的、但使用特殊网络设置并且在使用其他设置时会出现 SSO 问题的应用程序的捆绑 ID 前缀。 添加到 AppCookieSSOAllowList 的应用也必须添加到 AppPrefixAllowList。 请注意,此密钥仅用于 iOS 应用,不适用于 macOS 应用。

常用方案的设置

  • 方案:我想要为大部分而不是所有托管应用程序启用 SSO。

    Enable_SSO_On_All_ManagedApps 1
    AppBlockList 要阻止其参与 SSO 的应用的捆绑 ID(逗号分隔的列表)。
  • 方案:我想要为 Safari 禁用 SSO(默认已启用),但要为所有托管应用启用 SSO。

    Enable_SSO_On_All_ManagedApps 1
    AppBlockList 要阻止其参与 SSO 的 Safari 应用的捆绑 ID(逗号分隔的列表)。
    • 对于 iOS:com.apple.mobilesafaricom.apple.SafariViewService
    • 对于 macOS:com.apple.Safari
  • 方案:我想要对所有托管应用以及少量的非托管应用启用 SSO,但要为其他几个应用禁用 SSO。

    Enable_SSO_On_All_ManagedApps 1
    AppAllowList 要允许其参与 SSO 的应用的捆绑 ID(逗号分隔的列表)。
    AppBlockList 要阻止其参与 SSO 的应用的捆绑 ID(逗号分隔的列表)。
在 iOS 设备上查找应用程序包标识符

Apple 不提供从 App Store 获取应用程序包 ID 的简单方法。 要获取要用于 SSO 的应用的应用程序包 ID,最简单的方法是询问供应商或应用开发人员。 如果该选项不可用,那么可使用 MDM 配置来查找应用程序包 ID:

  1. 在 MDM 配置中暂时启用以下标志:

    • 键:admin_debug_mode_enabled
    • 类型:Integer
    • :1 或 0
  2. 当此标志启用时,在设备上登录到你想要知道其应用程序包 ID 的 iOS 应用。

  3. 在 Authenticator 应用中,选择“帮助”>“发送日志”>“查看日志”。

  4. 在日志文件中,查找以下行:[ADMIN MODE] SSO extension has captured following app bundle identifiers。 此行应捕获 SSO 扩展可见的所有应用程序包 ID。

使用应用程序包 ID 为应用配置 SSO。 完成后禁用管理模式。

允许用户从不使用 MSAL 和 Safari 浏览器的应用程序登录

默认情况下,当在获取新令牌期间使用 MSAL 的另一个应用调用 Microsoft 企业 SSO 插件时,它将获取共享凭据。 根据配置,当不使用 MSAL 的应用调用 Microsoft 企业 SSO 插件时,它也可以获取共享凭据。

启用 browser_sso_interaction_enabled 标志后,不使用 MSAL 的应用可执行初始启动并获取共享凭据。 Safari 浏览器也可执行初始启动并获取共享凭据。

如果 Microsoft 企业 SSO 插件还没有共享凭据,则每当从 Safari 浏览器、ASWebAuthenticationSession、SafariViewController 或其他允许的本机应用程序中的 Microsoft Entra URL 请求登录时,该插件都将尝试获取一个凭据。

使用以下这些参数启用标志:

  • 键:browser_sso_interaction_enabled
  • 类型:
  • 值:1 或 0。 默认情况下,该值设置为 1。

iOS 和 macOS 都需要此设置,以便 Microsoft 企业 SSO 插件可以在所有应用中提供一致的体验。 此设置默认处于启用状态,仅当最终用户无法使用其凭据登录时,才应禁用此设置。

禁用 OAuth 2 应用程序提示

如果应用程序提示你的用户进行登录,即使 Microsoft 企业 SSO 插件对设备上的其他应用程序起作用,该应用也可能在协议层绕过 SSO。 共享的凭据也会被此类应用程序忽略,因为插件通过将凭据追加到允许的应用程序发送的网络请求中来提供 SSO。

这些参数指定 SSO 扩展是否应阻止本机或 Web 应用程序在协议层绕过 SSO 并强制向用户显示登录提示。

为了在设备上的所有应用中获得一致的 SSO 体验,建议为不使用 MSAL 的应用启用其中一个设置。 仅当用户遇到意外提示时,才应为使用 MSAL 的应用启用此功能。

不使用 Microsoft 身份验证库的应用:

禁用应用提示并显示帐户选取器:

  • 键:disable_explicit_app_prompt
  • 类型:
  • 值:1 或 0。 默认情况下,该值设置为 1,此默认设置会减少提示。

禁用应用提示并自动从匹配的 SSO 帐户列表中选择帐户:

  • 键:disable_explicit_app_prompt_and_autologin
  • 类型:
  • 值:1 或 0。 默认情况下,此值设置为 0。
使用 Microsoft 身份验证库的应用:

如果正在使用应用保护策略,则不建议使用以下设置。

禁用应用提示并显示帐户选取器:

  • 键:disable_explicit_native_app_prompt
  • 类型:
  • 值:1 或 0。 默认情况下,此值设置为 0。

禁用应用提示并自动从匹配的 SSO 帐户列表中选择帐户:

  • 键:disable_explicit_native_app_prompt_and_autologin
  • 类型:
  • 值:1 或 0。 默认情况下,此值设置为 0。

意外的 SAML 应用程序提示

如果应用程序提示你的用户进行登录,即使 Microsoft 企业 SSO 插件对设备上的其他应用程序起作用,该应用也可能在协议层绕过 SSO。 如果应用程序使用 SAML 协议,则 Microsoft 企业 SSO 插件将无法向应用提供 SSO。 应用程序供应商应收到有关此行为的通知,并在其应用中进行更改,使其不绕过 SSO。

更改已启用 MSAL 的应用程序的 iOS 体验

使用 MSAL 的应用将始终针对交互式请求以本机方式调用 SSO 扩展。 在某些 iOS 设备上,可能不需要这样做。 具体而言,如果用户还需要在 Microsoft Authenticator 应用中完成多重身份验证,则对应用进行交互式重定向可能会提供更好的用户体验。

可以使用 disable_inapp_sso_signin 标志配置此行为。 如果启用此标志,则使用 MSAL 的应用将针对所有交互式请求重定向到 Microsoft Authenticator 应用。 此标志不会影响来自这些应用的无提示令牌请求、不使用 MSAL 的应用的行为或 macOS 应用。 默认情况下,此标志处于禁用状态。

  • 键:disable_inapp_sso_signin
  • 类型:
  • 值:1 或 0。 默认情况下,此值设置为 0。

配置 Microsoft Entra 设备注册

对于 Intune 管理的设备,当用户尝试访问资源时,Microsoft 企业 SSO 插件可以执行 Microsoft Entra 设备注册。 这可实现更简化的最终用户体验。

使用以下配置通过 Microsoft Intune 为 iOS/iPadOS 启用实时注册:

  • 键:device_registration
  • 类型:
  • :{{DEVICEREGISTRATION}}

在此处详细了解实时注册。

条件访问策略和密码更改

适用于 Apple 设备的 Microsoft 企业 SSO 插件与各种Microsoft Entra 条件访问策略和密码更改事件兼容。 需要启用 browser_sso_interaction_enabled 才能实现兼容性。

以下部分介绍了兼容的事件和策略:

密码更改和令牌吊销

当用户重置其密码时,将吊销之前颁发的所有令牌。 如果用户在密码重置事件后尝试访问资源,则用户通常需要在每个应用中重新登录。 启用 Microsoft 企业 SSO 插件后,系统会要求用户登录参与 SSO 的第一个应用程序。 Microsoft 企业 SSO 插件将在当前处于活动状态的应用程序顶部显示其自己的用户界面。

Microsoft Entra 多重身份验证

多重身份验证是一种过程。在该过程中,系统会在用户登录时提示其输入其他形式的标识,例如在其手机上输入代码或提供指纹扫描。 可以为特定资源启用多重身份验证。 启用 Microsoft 企业 SSO 插件后,系统会要求用户在需要它的第一个应用程序中执行多重身份验证。 Microsoft 企业 SSO 插件将在当前处于活动状态的应用程序顶部显示其自己的用户界面。

用户登录频率

登录频率定义了在用户尝试访问资源时被要求重新登录之前所经过的时间段。 如果用户在各种应用中经过一段时间后试图访问资源,则用户通常需要在每个应用中重新登录。 启用 Microsoft 企业 SSO 插件后,系统会要求用户登录参与 SSO 的第一个应用程序。 Microsoft 企业 SSO 插件将在当前处于活动状态的应用程序顶部显示其自己的用户界面。

所需的网络配置

Microsoft 企业 SSO 插件依赖于 Apple 的企业 SSO 框架。 Apple 的企业 SSO 框架使用称为关联域的技术,确保只有批准的 SSO 插件才能适用于每个标识提供者。 为了验证 SSO 插件的标识,每个 Apple 设备都会将网络请求发送到标识提供者拥有的终结点,并读取有关已批准的 SSO 插件的信息。除了直接与标识提供者联系外,Apple 还针对此信息实现了另一种缓存。

若要使 SSO 插件正常运行,应允许 Apple 设备访问标识提供者 URL 及其自己的 URL,而无需进行额外的拦截。 这意味着需要从网络代理、拦截和其他企业系统中排除这些 URL。

下面是需要允许 SSO 插件才能正常运行的最小 URL 集:

  • app-site-association.cdn-apple.com
  • app-site-association.networking.apple
  • login.microsoftonline.com(*)
  • login.microsoft.com(*)
  • sts.windows.net(*)
  • login.partner.microsoftonline.cn(*)(**)
  • login.chinacloudapi.cn(*)(**)

(*)允许仅在 2022 年之前发布的操作系统版本上要求 Microsoft 域。 在最新的操作系统版本中,Apple 完全依赖于其 CDN。

(**)仅当依赖于环境中的主权云域时,才需要允许主权云域。

警告

如果组织使用针对数据丢失防护或租户限制等方案拦截 SSL 流量的代理服务器,请确保在 TLS 中断和检查中排除发往这些 URL 的流量。 未能排除这些 URL 会导致干扰客户端证书身份验证,从而导致设备注册和基于设备的条件访问出现问题。 SSO 插件在完全排除 Apple CDN 域拦截的情况下将无法可靠地工作,并且你将遇到间歇性问题直到执行此操作。

如果组织阻止这些 URL,用户可能会看到 1012 NSURLErrorDomain error1000 com.apple.AuthenticationServices.AuthorizationError1001 Unexpected 等错误。

其他可能需要允许的 Apple URL 记录在其支持文章《在企业网络上使用 Apple 产品》中。

使用 Intune 简化配置

可以使用 Intune 作为 MDM 服务来方便配置 Microsoft 企业 SSO 插件。 例如,可以使用 Intune 启用该插件,并将旧应用添加到允许列表,以便它们实现 SSO。

有关详细信息,请参阅 Intune 配置文档

在应用程序中使用 SSO 插件

适用于 Apple 设备的 MSAL 1.1.0 及更高版本支持适用于 Apple 设备的 Microsoft 企业 SSO 插件。 建议为 Microsoft 企业 SSO 插件添加支持。 它可确保获取 Microsoft 标识平台的完整功能。

如果要为一线工作人员方案构建应用程序,请参阅适用于 iOS 设备的共享设备模式,以获取设置信息。

了解 SSO 插件的工作原理

Microsoft 企业 SSO 插件依赖于 Apple 企业 SSO 框架。 加入该框架的标识提供者可以拦截其域的网络流量,并改进或更改这些请求的处理方式。 例如,SSO 插件可以显示更多 UI,以安全方式收集最终用户凭据、需要进行 MFA 或以无提示方式向应用程序提供令牌。

本机应用程序还可以实现自定义操作,并直接与 SSO 插件进行通信。 有关详细信息,请参阅此 2019 Apple 全球开发者会议视频

提示

若要详细了解 SSO 插件的工作原理以及如何对 Microsoft 企业 SSO 扩展进行故障排除,请查看面向 Apple 设备的 SSO 故障排除指南

使用 MSAL 的应用程序

对于工作和学校帐户,适用于 Apple 设备的 MSAL 1.1.0 及更高版本在本机支持适用于 Apple 设备的 Microsoft 企业 SSO 插件。

如果遵循所有建议的步骤并使用默认的重定向 URI 格式,则无需进行任何特殊配置。 在具有 SSO 插件的设备上,MSAL 会自动为所有交互式和无提示令牌请求调用它。 还会为帐户枚举和帐户删除操作调用它。 由于 MSAL 实现了依赖于自定义操作的本机 SSO 插件协议,此设置可为最终用户提供最流畅的本机体验。

在 iOS 和 iPadOS 设备上,如果 MDM 未启用 SSO 插件,但设备上存在 Microsoft Authenticator 应用,则 MSAL 将对任何交互式令牌请求改用 Authenticator 应用。 Microsoft 企业 SSO 插件与 Authenticator 应用共享 SSO。

不使用 MSAL 的应用程序

如果管理员将不使用 MSAL 的应用程序添加到允许列表中,则这些应用程序仍然可以获得 SSO。

只要满足以下条件,便无需更改这些应用中的代码:

  • 应用程序使用 Apple 框架运行网络请求。 例如,这些框架包括 WKWebViewNSURLSession
  • 应用程序使用标准协议与 Microsoft Entra ID 进行通信。 例如,这些协议包括 OAuth 2、SAML 和 WS 联合身份验证。
  • 应用程序不在本机 UI 中收集纯文本用户名和密码。

在这种情况下,应用程序创建网络请求并打开 Web 浏览器以让用户登录时,系统将提供 SSO。 当用户被重定向到 Microsoft Entra 登录 URL 时,SSO 插件将验证该 URL 并检查该 URL 的 SSO 凭据。 如果找到该凭据,SSO 插件则会将其传递到 Microsoft Entra ID,进而授权该应用程序完成网络请求,而不会要求用户输入凭据。 此外,如果 Microsoft Entra ID 已知设备,SSO 插件还会传递设备证书,以满足基于设备的条件访问检查。

为了支持非 MSAL 应用使用 SSO,SSO 插件实现了一个与什么是主刷新令牌?中所述的 Windows 浏览器插件类似的协议。

与基于 MSAL 的应用相比,SSO 插件对非 MSAL 应用执行的操作更加透明。 它与应用提供的现有浏览器登录体验集成。

最终用户会看到熟悉的体验,无需在每个应用程序中都再次登录。 例如,SSO 插件不会显示本机帐户选取器,而是将 SSO 会话添加到基于 Web 的帐户选取器体验中。

后续步骤

了解适用于 iOS 设备的共享设备模式

了解如何对 Microsoft 企业 SSO 扩展进行故障排除