将 Google 添加为 B2B 来宾用户的标识提供者

提示

本文介绍如何将 Google 添加为 B2B 协作的标识提供者。 如果你的租户配置了客户标识和访问管理,请参阅将 Google 添加为客户的标识提供者

通过设置 Google 联合身份验证,可让受邀的用户使用其自己的 Gmail 帐户登录到你的共享应用和资源,而无需创建 Microsoft 帐户。 将 Google 添加为应用程序的登录选项之一后,用户可以在“登录”页面上输入他们用来登录 Google 的 Gmail 地址

Sign in options for Google users

注意

Google 联合专为 Gmail 用户设计。 若要与 Google Workspace 域联合,请使用 SAML/WS-Fed 标识提供者联合

重要

  • 从 2021 年 7 月 12 日开始,如果 Microsoft Entra B2B 客户设置了新的 Google 集成,以用于自助注册自定义应用程序或业务线应用程序,或用于邀请外部用户使用这些应用程序,则可能会阻止 Gmail 用户进行身份验证(预期发生的情况中显示了错误屏幕)。 仅当在 2021 年 7 月 12 日之后为自助注册用户流或邀请创建 Google 集成或业务线应用程序未移至系统 Web 视图时,才发生此问题。 由于默认情况下启用了系统 Web 视图,因此大多数应用不会受到影响。 为了避免此问题,我们强烈建议你在为自助注册创建任何新的 Google 集成之前,将 Gmail 身份验证移至系统浏览器。 请参阅嵌入式 Web 视图所需的操作
  • 从 2021 年 9 月 30 日开始,Google 将弃用 Web 视图登录支持。 如果你的应用使用嵌入式 Web 视图对用户进行身份验证,而你将 Google 联合身份验证与 Azure AD B2C 或 Microsoft Entra B2B 配合使用来进行外部用户邀请或自助注册,则 Google Gmail 用户将无法进行身份验证。 了解详细信息

Google 用户体验是什么?

可以通过多种方式邀请 Google 用户进行 B2B 协作。 例如,可以通过 Microsoft Entra 管理中心将其添加到你的目录。 当用户兑换邀请时,其体验因是否已登录到 Google 而异:

  • 系统将提示未登录到 Google 的来宾用户执行此操作。
  • 如果来宾用户已登录到 Google,则系统会提示他们选择要使用的帐户。 他们必须选择你在邀请他们时所用的帐户。

看到“标题过长”错误的来宾用户可以清除其 Cookie 或打开专用或隐身窗口,然后尝试重新登录。

Screenshot that shows the Google sign-in page.

登录终结点

Google 来宾用户现在可以使用公用终结点(也就是不包含租户上下文的常规应用 URL)登录到多租户或 Microsoft 第一方应用。 在登录过程中,来宾用户选择“登录选项”,然后选择“登录到组织” 。 然后,用户需要键入组织的名称并继续使用其 Google 凭据登录。

Google 来宾用户还可以使用包含租户信息的应用程序终结点,例如:

  • https://myapps.microsoft.com/?tenantid=<your tenant ID>
  • https://myapps.microsoft.com/<your verified domain>.onmicrosoft.com
  • https://portal.azure.com/<your tenant ID>

还可以通过添加租户信息,为 Google 来宾用户提供指向应用程序或资源的直接链接,例如 https://myapps.microsoft.com/signin/Twitter/<application ID?tenantId=<your tenant ID>

弃用 web-view 登录支持

从 2021 年 9 月 30 日开始,Google 将弃用嵌入式 Web 视图登录支持。 如果你的应用使用嵌入式 Web 视图对用户进行身份验证,而你将 Google 联合身份验证与 Azure AD B2C 或 Microsoft Entra B2B 配合使用来进行外部用户邀请自助注册,则 Google Gmail 用户将无法进行身份验证。

下面是会影响 Gmail 用户的已知方案:

  • Windows 上的 Microsoft 应用(例如 Teams 和 Power Apps)
  • 使用 WebView 控件、WebView2 或陈旧的 WebBrowser 控件进行身份验证的 Windows 应用。 这些应用应迁移到使用 Web 帐户管理器 (WAM) 流。
  • 使用 WebView UI 元素的 Android 应用程序
  • 使用 UIWebView/WKWebview 的 iOS 应用程序
  • 使用 ADAL 的应用

此更改不会影响:

  • Web 应用
  • 通过网站访问的 Microsoft 365 服务(例如 SharePoint Online、Office Web Apps 和 Teams Web 应用)
  • 使用系统 web-view 进行身份验证的移动应用(iOS 上的 SFSafariViewController、Android 上的自定义标签)。
  • Google Workspace 标识,例如,将基于 SAML 的联合与 Google Workspace 结合使用时
  • 使用 Web 帐户管理器(WAM)或 Web 身份验证代理 (WAB) 的 Windows 应用。

嵌入式 web-view 所需的操作

修改应用以使用系统浏览器进行登录。 有关详细信息,请参阅 MSAL.NET 文档中的嵌入 web 视图与系统浏览器。 默认情况下,所有 MSAL SDK 都使用系统浏览器。

期望

从 9 月 30 日开始,Microsoft 将全局推出一个设备登录流,作为解决方法提供给仍在使用嵌入式 Web 视图的应用,以确保不会阻止身份验证。

如何使用设备登录流登录

设备登录流会提示在嵌入式 Web 视图中使用 Gmail 帐户登录的用户在单独的浏览器中输入代码,然后才能完成登录。 如果用户首次使用其 Gmail 帐户登录且浏览器中没有活动会话,他们会看到下述一系列屏幕。 如果现有的 Gmail 帐户已登录,则其中一些步骤可能会取消。

  1. 在“登录”屏幕上,用户输入其 Gmail 地址,然后选择“下一步”。

    Screenshot showing the sign-in screen

  2. 出现以下屏幕,提示用户打开新窗口,导航到 https://microsoft.com/devicelogin,然后输入显示的 9 位字母数字代码。

    Screenshot showing the 9-digit code

  3. 此操作将打开设备登录页面,用户可以在此页面中输入代码。

    Screenshot showing the device sign-in page

  4. 如果代码匹配,出于安全目的,系统会要求用户重新输入其电子邮件地址以确认其应用和登录位置。

    Screenshot showing the screen for reentering email

  5. 用户使用其电子邮件和密码登录 Google。

    Screenshot showing the Google sign-in screen

  6. 系统将再次要求用户确认要登录的应用。

    Screenshot showing application confirmation screen

  7. 用户选择“继续”。 提示确认用户已登录。 用户关闭选项卡或窗口,并返回到第一个屏幕,此时用户已登录到应用。

    Screenshot showing sign-in confirmation

或者,现有 Gmail 用户和新 Gmail 用户可以使用电子邮件一次性密码进行登录。 若要让 Gmail 用户使用电子邮件一次性密码,请执行以下操作:

  1. 启用电子邮件一次性密码
  2. 删除 Google 联合身份验证
  3. 重置 Gmail 用户的兑换状态,以便他们今后可以使用电子邮件一次性密码。

如果你要请求延期,具有受影响 OAuth 客户端 ID 的受影响客户应已收到来自 Google Developers 的电子邮件,其中包含有关一次性政策实施延期的以下信息;但是,最迟只能延期到 2022 年 1 月 31 日:

  • “如有必要,你可以为列出的每个 OAuth 客户端 ID 请求适用于嵌入式 Web 视图的政策实施延期,延期是一次性的,至 2022 年 1 月 31 日结束。 为清楚起见,适用于嵌入式 Web 视图的政策将于 2022 年 2 月 1 日起实施,没有任何例外或延期。”

迁移到允许使用 web-view 进行身份验证的应用程序将不会受到影响,并且像往常一样,将不允许用户通过 Google 进行身份验证。

如果应用程序未迁移到允许的 Web 视图进行身份验证,则受影响的 Gmail 用户将看到以下屏幕。

Google sign-in error if apps are not migrated to system browsers

区分 CEF/Electron 和嵌入式 web-view

除了弃用嵌入式 web-view 和框架登录支持之外,Google 还将弃用基于 Chromium 嵌入式框架 (CEF) 的 Gmail 身份验证。 对于基于 CEF 构建的应用程序(如 Electron 应用),Google 将于 2021 年 6 月 30 日禁用身份验证。 受影响的应用程序已直接收到 Google 的通知,本文档未涵盖这些应用程序。 本文档涉及上述嵌入式 Web 视图,Google 将在 2021 年 9 月 30 日限制这些 Web 视图。

嵌入式框架所需的操作

按照 Google 指南操作,以确定应用是否受到影响。

步骤 1:配置 Google 开发人员项目

首先,在 Google Developers Console 中创建一个新项目,以获取稍后要添加到 Microsoft Entra 外部 ID 的客户端 ID 和客户端机密。

  1. 转到 Google API (https://console.developers.google.com ),并使用 Google 帐户登录。 我们建议使用共享团队 Google 帐户。

  2. 如果系统提示接受服务条款,请接受它。

  3. 创建新项目:在页面顶部,选择项目菜单以打开“选择项目”页。 选择“新建项目”。

  4. 在“新建项目”页上,为项目指定名称(例如 MyB2BApp),然后选择“创建”:

    Screenshot that shows a New Project page.

  5. 通过选择“通知”消息框中的链接,或通过使用页面顶部的项目菜单,打开该新项目。

  6. 在左侧菜单中,选择“API 和服务”,然后选择“OAuth 同意屏幕” 。

  7. 在“用户类型”下,选择“外部”,然后选择“创建”。

  8. 在“OAuth 许可屏幕”上的“应用信息”下,输入应用名称。

  9. 在“用户支持电子邮件”下,选择电子邮件地址。

  10. 在“已授权域”下,选择“添加域”,然后添加 microsoftonline.com 域。

  11. 在“开发人员联系信息”下,输入电子邮件地址。

  12. 选择“保存并继续”。

  13. 在左侧菜单中,选择“凭据”。

  14. 选择“创建凭据”,然后选择“OAuth 客户端 ID”。

  15. 在“应用程序类型”菜单中,选择“Web 应用程序”。 为该应用程序指定适当的名称,例如“Microsoft Entra B2B”。 在“已授权的重定向 URI”下,添加以下 URI:

    • https://login.microsoftonline.com
    • https://login.microsoftonline.com/te/<tenant ID>/oauth2/authresp
      (其中 <tenant ID> 是租户 ID)
    • https://login.microsoftonline.com/te/<tenant name>.onmicrosoft.com/oauth2/authresp
      (其中 <tenant name> 是租户名)

    注意

    要查找你的租户 ID,请登录 Microsoft Entra 管理中心。 在“标识”下,选择“概述”并复制“租户 ID”。

  16. 选择创建。 复制你的客户端 ID 和客户端密码 。 在 Microsoft Entra 管理中心内添加标识提供者时,你将使用这些信息。

    Screenshot that shows the OAuth client ID and client secret.

  17. 可以将项目保留为“测试”的发布状态,并将测试用户添加到 OAuth 同意屏幕。 也可以选择 OAuth 同意屏幕上的“发布应用”按钮,以便让任何拥有 Google 帐户的用户都可以使用该应用。

    注意

    在有些情况下,你的应用可能需要由 Google 验证(例如,如果你更新应用程序徽标)。 有关详细信息,请参阅 Google 的 验证状态帮助

步骤 2:在 Microsoft Entra 外部 ID 中配置 Google 联合身份验证

现在,你将设置 Google 客户端 ID 和客户端密码。 可使用 Microsoft Entra 管理中心或 PowerShell 执行此操作。 务必通过邀请自己来测试 Google 联合身份验证配置。 使用 Gmail 地址,并尝试使用受邀的 Google 帐户兑换邀请。

要在 Microsoft Entra 管理中心内配置 Google 联合身份验证

  1. 至少以外部标识提供者管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识>外部标识>所有标识提供者”,然后选择“Google”按钮。

  3. 输入之前获得的客户端 ID 和客户端密码。 选择“保存”

    Screenshot that shows the Add Google identity provider page.

使用 PowerShell 配置 Google 联合

  1. 安装最新版本的 Microsoft Graph PowerShell 模块

  2. 使用 Connect-MgGraph 命令连接到租户。

  3. 根据登录提示使用托管的全局管理员帐户登录。

  4. 运行以下命令:

    $params = @{
       "@odata.type" = "microsoft.graph.socialIdentityProvider"
       displayName = "Login with Google"
       identityProviderType = "Google"
       clientId = "<client ID>"
       clientSecret = "<client secret>"
    }
    
    New-MgIdentityProvider -BodyParameter $params
    

    注意

    使用在“步骤 1:配置 Google 开发人员项目”中创建的应用客户端 ID 和客户端密码。有关更多信息,请参阅 New-MgIdentityProvider

将 Google 标识提供者添加到用户流

此时,已经在你的 Microsoft Entra 租户中设置了 Google 标识提供者。 兑换你发出的邀请的用户可以使用 Google 登录。 但是,如果你已创建自助注册用户流,则还需要将 Google 添加到用户流登录页面。 将 Google 标识提供者添加到用户流:

  1. 浏览到“标识”>“外部标识”>“用户流”。

  2. 选择要将 Google 标识提供者添加到的用户流。

  3. 在“设置”下,选择“标识提供者”。

  4. 在标识提供者列表中选择“Google”

  5. 选择“保存”。

如何删除 Google 联合?

可以删除 Google 联合设置。 如果你这样做,已兑换其邀请的 Google 来宾用户将无法登录。 但您可以通过重置这些用户的兑换状态,让这些用户能够再次访问你的资源。

要在 Microsoft Entra 管理中心内删除 Google 联合身份验证

  1. 至少以外部标识提供者管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“外部标识”>“所有标识提供者”。

  3. 在 Google 行上,选择省略号 (...),然后选择“删除”。

    Screenshot that shows the Delete button for the social identity provider.

  4. 选择“是”确认删除。

使用 PowerShell 删除 Google 联合身份验证

  1. 安装最新版本的 Microsoft Graph PowerShell 模块

  2. 使用 Connect-MgGraph 命令连接到租户。

  3. 根据登录提示,使用托管的全局管理员帐户登录。

  4. 输入以下命令:

    Remove-MgIdentityProvider -IdentityProviderBaseId Google-OAUTH
    

    注意

    有关更多信息,请参阅 Remove-MgIdentityProvider