将 Google 添加为 B2B 来宾用户的标识提供者
适用于: 员工租户 外部租户(了解详细信息)
提示
本文介绍如何在员工租户中将 Google 添加为用于 B2B 协作的标识提供者。 有关外部租户的说明,请参阅将 Google 添加为标识提供者。
通过设置 Google 联合身份验证,可让受邀的用户使用其自己的 Gmail 帐户登录到你的共享应用和资源,而无需创建 Microsoft 帐户。 将 Google 添加为应用程序的登录选项之一后,用户可以在“登录”页面上输入他们用来登录 Google 的 Gmail 地址。
注意
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 或打开专用或隐身窗口,然后尝试重新登录。
登录终结点
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/X/<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 帐户已登录,则其中一些步骤可能会取消。
在“登录”屏幕上,用户输入其 Gmail 地址,然后选择“下一步”。
出现以下屏幕,提示用户打开新窗口,导航到 https://microsoft.com/devicelogin,然后输入显示的 9 位字母数字代码。
此操作将打开设备登录页面,用户可以在此页面中输入代码。
如果代码匹配,出于安全目的,系统会要求用户重新输入其电子邮件地址以确认其应用和登录位置。
用户使用其电子邮件和密码登录 Google。
系统将再次要求用户确认要登录的应用。
用户选择“继续”。 提示确认用户已登录。 用户关闭选项卡或窗口,并返回到第一个屏幕,此时用户已登录到应用。
或者,现有 Gmail 用户和新 Gmail 用户可以使用电子邮件一次性密码进行登录。 若要让 Gmail 用户使用电子邮件一次性密码,请执行以下操作:
- 启用电子邮件一次性密码。
- 删除 Google 联合身份验证。
- 重置 Gmail 用户的兑换状态,以便他们今后可以使用电子邮件一次性密码。
如果你要请求延期,具有受影响 OAuth 客户端 ID 的受影响客户应已收到来自 Google Developers 的电子邮件,其中包含有关一次性政策实施延期的以下信息;但是,最迟只能延期到 2022 年 1 月 31 日:
- “如有必要,你可以为列出的每个 OAuth 客户端 ID 请求适用于嵌入式 Web 视图的政策实施延期,延期是一次性的,至 2022 年 1 月 31 日结束。 为清楚起见,适用于嵌入式 Web 视图的政策将于 2022 年 2 月 1 日起实施,没有任何例外或延期。”
迁移到允许使用 web-view 进行身份验证的应用程序将不会受到影响,并且像往常一样,将不允许用户通过 Google 进行身份验证。
如果应用程序未迁移到允许的 Web 视图进行身份验证,则受影响的 Gmail 用户将看到以下屏幕。
区分 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 和客户端机密。
转到 Google API (https://console.developers.google.com),并使用 Google 帐户登录。 我们建议使用共享团队 Google 帐户。
如果系统提示接受服务条款,请接受它。
创建新项目:在页面顶部,选择项目菜单以打开“选择项目”页。 选择“新建项目”。
在“新建项目”页上,为项目指定名称(例如
MyB2BApp
),然后选择“创建”:通过选择“通知”消息框中的链接,或通过使用页面顶部的项目菜单,打开该新项目。
在左侧菜单中,选择“API 和服务”,然后选择“OAuth 同意屏幕”。
在“用户类型”下,选择“外部”,然后选择“创建”。
在“OAuth 许可屏幕”上的“应用信息”下,输入应用名称。
在“用户支持电子邮件”下,选择电子邮件地址。
在“已授权域”下,选择“添加域”,然后添加
microsoftonline.com
域。在“开发人员联系信息”下,输入电子邮件地址。
选择“保存并继续”。
在左侧菜单中,选择“凭据”。
选择“创建凭据”,然后选择“OAuth 客户端 ID”。
在“应用程序类型”菜单中,选择“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”。
选择“创建”。 复制你的客户端 ID 和客户端密码。 在 Microsoft Entra 管理中心内添加标识提供者时,你将使用这些信息。
可以将项目保留为“测试”的发布状态,并将测试用户添加到 OAuth 同意屏幕。 也可以选择 OAuth 同意屏幕上的“发布应用”按钮,以便让任何拥有 Google 帐户的用户都可以使用该应用。
注意
在有些情况下,你的应用可能需要由 Google 验证(例如,如果你更新应用程序徽标)。 有关详细信息,请参阅 Google 的验证状态帮助。
步骤 2:在 Microsoft Entra 外部 ID 中配置 Google 联合身份验证
现在,你将设置 Google 客户端 ID 和客户端密码。 可使用 Microsoft Entra 管理中心或 PowerShell 执行此操作。 务必通过邀请自己来测试 Google 联合身份验证配置。 使用 Gmail 地址,并尝试使用受邀的 Google 帐户兑换邀请。
在 Microsoft Entra 管理中心内配置 Google 联合身份验证
至少以外部标识提供者管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“外部标识”>“所有标识提供者”,然后在 Google 行上选择“配置”。
输入之前获得的客户端 ID 和客户端密码。 选择“保存”:
使用 PowerShell 配置 Google 联合
安装最新版本的 Microsoft Graph PowerShell 模块。
使用 Connect-MgGraph 命令连接到租户。
在登录提示符下,至少以外部标识提供者管理员身份登录。
运行以下命令:
$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 标识提供者添加到用户流:
浏览到“标识”>“外部标识”>“用户流”。
选择要将 Google 标识提供者添加到的用户流。
在“设置”下,选择“标识提供者”。
在标识提供者列表中选择“Google”。
选择“保存”。
如何删除 Google 联合?
可以删除 Google 联合设置。 如果你这样做,已兑换其邀请的 Google 来宾用户将无法登录。 但您可以通过重置这些用户的兑换状态,让这些用户能够再次访问你的资源。
在 Microsoft Entra 管理中心内删除 Google 联合身份验证
至少以外部标识提供者管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“外部标识”>“所有标识提供者”。
在 Google 行上,选择“已配置”,然后选择“删除”。
选择“是”确认删除。
使用 PowerShell 删除 Google 联合身份验证
安装最新版本的 Microsoft Graph PowerShell 模块。
使用 Connect-MgGraph 命令连接到租户。
在登录提示符中,至少以外部标识提供者管理员身份登录。
输入以下命令:
Remove-MgIdentityProvider -IdentityProviderBaseId Google-OAUTH
注意
有关更多信息,请参阅 Remove-MgIdentityProvider。