你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在本文中,我们将介绍基于漏斗的设计方法的方案。 在开始设计之前,建议查看漏斗与基于区域两种设计方法的功能和性能。 本文将进一步帮助确定哪种设计最适合你的组织。
设计考虑到:
- 本地帐户注册和登录
- 联合帐户注册和登录
- 通过基于跨租户 API 的身份验证为从其注册区域外部登录的用户验证本地帐户
- 为从其注册区域之外登录的用户验证联合帐户(由基于跨租户 API 的查找提供支持)
- 防止从多个不同区域注册
- 每个区域中的应用程序都有一个要连接的终结点
本地帐户登录用例
以下用例在全局 Azure AD B2C 环境中是典型的。 本地帐户用例还涵盖用户旅行的帐户。 我们为每个用例提供图表和工作流步骤。
本地用户注册
此用例演示了来自其所在国家/地区的用户如何使用 Azure AD B2C 本地帐户执行注册。
来自欧洲、中东和非洲(EMEA)的用户尝试在 myapp.fr 注册。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据定义的条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户尝试注册。 注册过程会检查全局查找表,以确定用户是否存在于任何区域 Azure AD B2C 租户中。
全局查找表中找不到用户。 用户帐户将写入 Azure AD B2C,并将一条记录创建到全局查找表中,用于跟踪用户注册的区域。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
现有本地用户尝试注册
此用例演示了用户如何阻止从自己的国家/地区或其他区域重新注册同一电子邮件。
EMEA 中的用户尝试在 myapp.fr 注册。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户尝试注册。 注册过程会检查全局查找表,以确定用户是否存在于任何区域 Azure AD B2C 租户中。
用户的电子邮件位于全局查找表中,这表明用户在过去某个时间点已在该解决方案中注册了此电子邮件。
用户收到一条错误信息,提示其帐户已存在。
本地用户登录
此用例演示了来自其家乡/地区的用户如何使用 Azure AD B2C 本地帐户执行登录。
EMEA 中的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
该用户在区域租户中输入其凭据。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
旅行用户登录
此用例演示了用户如何跨区域旅行并维护其注册时存储在其区域租户中的用户配置文件和凭据。
一位来自北美(NOAM)的用户在法国度假期间尝试登录 myapp.fr。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
该用户在区域租户中输入其凭据。
区域租户在全局查找表中执行查找,因为在 EMEA Azure AD B2C 目录中找不到该用户的电子邮件。
该用户的电子邮件位于已在 NOAM Azure AD B2C 租户中注册的位置。
EMEA Azure AD B2C 租户针对 NOAM Azure AD B2C 租户执行 Microsoft Entra ROPC 流以验证凭据。
注释
此调用还将提取令牌,供用户执行图形 API 调用。 EMEA Azure AD B2C 租户对 NOAM Azure AD B2C 租户执行 Graph API 调用来提取用户的个人资料。 此调用由上一步中获取的图形 API 的访问令牌进行身份验证。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
本地用户忘记了密码
此用例演示当用户位于其所在国家/地区时如何重置其密码。
EMEA 中的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户到达 EMEA Azure AD B2C 租户并选择 忘记密码。 用户输入并验证其电子邮件。
执行电子邮件查找以确定用户所在的区域租户。
用户提供新密码。
新密码写入 EMEA Azure AD B2C 租户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
旅行用户忘记密码
此用例演示了用户在离开注册帐户的区域时如何重置其密码。
NOAM 的用户尝试在 myapp.fr 登录,因为他们正在法国度假。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户到达 EMEA Azure AD B2C 租户并选择 忘记密码。 用户输入并验证其电子邮件。
执行电子邮件查找以确定用户所在的区域租户。
该电子邮件存在于 NOAM Azure AD B2C 租户中。 用户提供新密码。
NOAM Azure AD B2C 租户的新密码通过图形 API 调用被写入。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
本地用户密码更改
此用例演示了用户在登录到注册其帐户的区域后如何更改其密码。
EMEA 中的用户尝试在登录到 myapp.fr 后选择更改密码。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户到达 EMEA Azure AD B2C 租户,Single-Sign On (SSO) Cookie 集允许用户立即更改其密码。
新密码将写入 EMEA Azure AD B2C 租户中的用户帐户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
旅行用户密码更改
此用例演示了用户在登录后如何更改其密码,远离注册其帐户的区域。
NOAM 用户登录 myapp.fr 后尝试更改密码。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户到达 EMEA Azure AD B2C 租户,SSO Cookie 集允许用户立即更改其密码。
检查全局查找表后,在 NOAM 租户中发现用户的电子邮件。
新密码由 MS Graph API 调用写入 NOAM Azure AD B2C 租户中的用户帐户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
联合标识提供者身份验证
以下用例演示了使用联合标识以 Azure AD B2C 客户端注册或登录的示例。
本地联合 ID 注册
此用例演示了用户如何使用联合 ID 从其本地区域注册服务。
EMEA 中的用户尝试在 myapp.fr 注册。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户选择使用联合标识提供者(IdP)登录。
在全局查找表中执行查找。
如果帐户链接在范围内:如果查找表中不存在从联合 IdP 返回的联合 IdP 标识符或电子邮件,则继续。
如果帐户链接不在范围内:如果查找表中不存在从联合 IdP 返回的联合 IdP 标识符,则继续。
将用户帐户写入 EMEA Azure AD B2C 租户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
本地联合用户登录
此用例演示了本地区域中的用户如何使用联合 ID 登录到服务。
EMEA 中的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户选择使用联合标识提供者登录。
在全局查找表中执行查找,确认用户的联合 ID 已在 EMEA 中注册。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
旅行联合用户登录
此用例演示了用户如何使用联合 IdP 登录其帐户,同时远离他们注册的区域。
来自 NOAM 的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户选择使用联合标识提供者登录。
注释
在所有 Azure AD B2C 区域租户中使用来自社交 IdP 处的应用注册的同一应用 ID。 这可确保从社交 IdP 返回的 ID 始终相同。
在全局查找表中执行查找,以确定用户的联合 ID 是否已在 NOAM 注册。
使用 MS Graph API 从 NOAM Azure AD B2C 租户读取帐户数据。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
具有匹配条件的帐户链接
此用例演示了用户在满足匹配条件时如何执行帐户链接。 匹配条件通常是用户电子邮件地址。 当来自新标识提供者的登录匹配条件与 Azure AD B2C 中现有帐户的值相同时,帐户链接过程就可以开始了。
EMEA 中的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户选择使用联合标识提供者/社交 IdP 登录。
对从联合 IdP 返回的 ID 在全局查找表中执行查找。
如果该 ID 不存在,但来自联合 IdP 的电子邮件存在于 EMEA Azure AD B2C 中,则这是一个帐户链接用例。
从目录中读取用户,并确定在帐户上启用哪些身份验证方法。 显示一个屏幕,让用户使用此帐户上的现有身份验证方法登录。
用户证明他们在 Azure AD B2C 中拥有该帐户后,将新的社交 ID 添加到现有帐户,并将社交 ID 添加到全局查找表中的帐户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。
具有匹配条件的旅行用户帐户链接
此用例演示了满足匹配条件时非本地用户如何执行帐户链接。 匹配条件通常是用户电子邮件地址。 当来自新标识提供者的登录匹配条件与 Azure AD B2C 中现有帐户的值相同时,帐户链接过程就可以开始了。
来自 NOAM 的用户尝试在 myapp.fr 登录。 如果未将用户发送到其本地应用程序实例,流量管理器将强制实施重定向。
该用户访问全局漏斗 Azure AD B2C 租户。 此租户配置为使用 OpenId 联合身份验证根据某些条件重定向到区域 Azure AD B2C 租户。 这可以是基于应用程序 clientId 的查找。
用户选择使用联合标识提供者/社交 IdP 登录。
对从联合 IdP 返回的 ID 在全局查找表中执行查找。
如果该 ID 不存在,并且来自联合 IdP 的电子邮件存在于另一个区域,则这是一个差旅用户帐户链接用例。
创建一个 id_token_hint 链接,断言用户当前收集的声明。 使用联合身份验证开启 NOAM Azure AD B2C 租户之旅。 用户证明他们通过 NOAM Azure AD B2C 租户拥有该帐户。
注释
此方法用于重复使用家庭租户中的现有帐户链接逻辑,并减少对外部 API 的调用次数以操作标识集合。 可在 此处找到利用id_token_hint的自定义策略示例。
用户证明他们在 Azure AD B2C 中拥有该帐户后,通过对 NOAM Azure AD B2C 租户进行图形 API 调用,将新的社交 ID 添加到现有帐户。 将社交 ID 添加到全局查找表中的帐户。
区域租户将令牌发回给漏斗租户。
漏斗租户向应用程序颁发令牌。