使用基于区域的方法构建全局标识解决方案

本文介绍基于区域的设计方法的方案。 在开始设计之前,建议查看基于漏斗和基于区域的设计方法的功能性能

设计考虑到了:

  • 本地帐户注册和登录
  • 联合帐户注册和登录
  • 对从其注册区域之外登录的用户的本地帐户进行身份验证,受基于跨租户 API 的身份验证的支持。
  • 对从其注册区域之外登录的用户的联合帐户进行身份验证,受基于跨租户 API 的查找的支持
  • 防止从多个不同区域注册
  • 每个区域中的应用程序都有一组要连接的终结点

本地帐户身份验证

以下用例在全球 Azure AD B2C 环境中很常见。 本地帐户用例还包括用户在差旅期间使用的帐户。 每种用例提供了示意图和工作流步骤。

本地用户注册

此用例演示本国/本地区的用户如何使用 Azure AD B2C 本地帐户执行注册。

屏幕截图显示了本地用户注册流。

  1. 欧洲、中东和非洲 (EMEA) 的用户尝试在 myapp.fr 上注册。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户尝试注册。 注册过程检查全局查找表以确定该用户是否存在于任何区域 Azure AD B2C 租户中。

  4. 在全局查找表中找不到该用户。 将用户的帐户写入 Azure AD B2C,并在全局查找表中创建一条记录以跟踪用户注册区域。

  5. 区域租户向应用颁发令牌。

现有本地用户尝试注册

此用例演示如何阻止用户从其自己的国家/地区或不同区域重新注册相同的电子邮件。

屏幕截图显示了现有本地用户尝试注册的流程。

  1. EMEA 的用户尝试在 myapp.fr 上注册。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户尝试注册。 注册过程检查全局查找表以确定该用户是否存在于任何区域 Azure AD B2C 租户中。

  4. 在全局查找表中查找该用户的电子邮件,结果指示该用户在过去某个时间点已在解决方案中注册此电子邮件。

  5. 向用户显示错误,指出其帐户已存在。

本地用户登录

此用例演示本国/本地区的用户如何使用 Azure AD B2C 本地帐户执行登录。

屏幕截图显示了本地用户登录流。

  1. EMEA 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户在区域租户中输入其凭据。

  4. 区域租户向应用颁发令牌。

  5. 用户已登录到应用。

差旅用户登录

此用例演示用户如何跨区域旅行并将其用户配置文件和凭据保持存储在与注册相关的区域租户中。

屏幕截图显示了差旅用户登录流。

  1. 北美 (NOAM) 的用户尝试在 myapp.fr 上登录,因为该用户在法国度假。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户在区域租户中输入其凭据。

  4. 区域租户在全局查找表中执行查找,因为在 EMEA Azure AD B2C 目录中找不到该用户的电子邮件。

  5. 该用户的电子邮件位于已在 NOAM Azure AD B2C 租户中注册的位置。

  6. EMEA Azure AD B2C 租户针对 NOAM Azure AD B2C 租户执行 Microsoft Entra ROPC 流以验证凭据。

    注意

    此调用还会提取用户的令牌以执行 Graph API 调用。 EMEA Azure AD B2C 租户对 NOAM Azure AD B2C 租户执行 Graph API 调用以提取用户的配置文件。 此调用由上一步骤获取的 Graph API 访问令牌进行身份验证。

  7. 区域租户向应用颁发令牌。

本地用户忘记了密码

此用例演示用户在本国/本地区如何重置密码。

屏幕截图显示了本地用户忘记密码时重置密码的流程。

  1. EMEA 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户进入 EMEA Azure AD B2C 租户并选择“忘记密码”。 用户输入并验证其电子邮件。

  3. 执行电子邮件查找以确定用户所在的区域租户。

  4. 用户提供新密码。

  5. 将新密码写入 EMEA Azure AD B2C 租户。

  6. 区域租户向应用颁发令牌。

差旅用户忘记了密码

此用例演示用户在其注册帐户的区域之外旅行时如何重置密码。

屏幕截图显示了差旅用户忘记密码时重置密码的流程。

  1. NOAM 的用户尝试在 myapp.fr 上登录,因为该用户在法国度假。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户进入 EMEA Azure AD B2C 租户并选择“忘记密码”。 用户输入并验证其电子邮件。

  3. 执行电子邮件查找以确定用户所在的区域租户。

  4. 发现电子邮件存在于 NOAM Azure AD B2C 租户中。 用户提供新密码。

  5. 新密码通过 Graph API 调用写入 NOAM Azure AD B2C 租户。

  6. 区域租户向应用颁发令牌。

本地用户密码更改

此用例演示用户如何在登录到注册帐户的区域后更改密码。

屏幕截图显示了本地用户更改密码的流程。

  1. EMEA 的用户尝试在登录到 myapp.fr 后选择“更改密码”。

  2. 用户进入 EMEA Azure AD B2C 租户,单一登录 (SSO) Cookie 集允许用户立即更改密码。

  3. 将新密码写入 EMEA Azure AD B2C 租户中的用户帐户。

  4. 区域租户向应用颁发令牌。

差旅用户密码更改

此用例演示用户如何在注册帐户的区域之外登录后更改密码。

屏幕截图显示了差旅用户更改密码的流程。

  1. NOAM 的用户尝试在登录到 myapp.fr 后选择“更改密码”。

  2. 用户进入 EMEA Azure AD B2C 租户,SSO Cookie 集允许用户立即更改密码。

  3. 检查全局查找表后,发现用户电子邮件在 NOAM 租户中。

  4. 新密码通过 MS Graph API 调用写入 NOAM Azure AD B2C 租户中的用户帐户。

  5. 区域租户向应用颁发令牌。

联合标识提供者身份验证

以下用例演示使用联合标识以 Azure AD B2C 客户端的形式注册或登录的示例。

本地联合 ID 注册

此用例演示本地区域中的用户如何使用联合 ID 注册服务。

屏幕截图显示了注册流。

  1. EMEA 的用户尝试在 myapp.fr 上注册。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户选择使用联合标识提供者登录。

  4. 在全局查找表中执行查找。

    • 如果帐户链接未超出范围:如果查找表中不存在联合 IdP 标识符,也不存在来自联合 IdP 的电子邮件,则继续。

    • 如果帐户链接超出范围:如果查找表中不存在来自联合 IdP 的联合 IdP 标识符,则继续。

  5. 将用户帐户写入 EMEA Azure AD B2C 租户。

  6. 区域租户向应用颁发令牌。

本地联合用户登录

此用例演示本地区域中的用户如何使用联合 ID 登录到服务。

屏幕截图显示了登录流。

  1. EMEA 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户选择使用联合标识提供者登录。

  4. 在全局查找表中执行查找,并确认用户的联合 ID 是否已在 EMEA 中注册。

  5. 区域租户向应用颁发令牌。

差旅联合用户登录

此方案演示在注册区域之外的用户如何使用联合 IdP 执行服务登录。

屏幕截图显示了差旅用户登录的流程。

  1. NOAM 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户选择使用联合标识提供者登录。

    注意

    在所有 Azure AD B2C 区域租户中使用社交 IdP 上的应用注册中的相同应用 ID。 这可以确保从社交 IdP 返回的 ID 始终相同。

  4. 在全局查找表中执行查找,并确定用户的联合 ID 是否已在 NOAM 中注册。

  5. 使用 MS Graph API 从 NOAM Azure AD B2C 租户读取帐户数据。

  6. 区域租户向应用颁发令牌。

使用匹配条件的帐户链接

此方案演示在满足匹配条件(通常是电子邮件地址)时用户如何执行帐户链接。

屏幕截图显示了合并/链接帐户的流程。

  1. EMEA 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户选择使用联合标识提供者/社交 IdP 登录。

  4. 在全局查找表中对从联合 IdP 返回的 ID 执行查找。

  5. 如果该 ID 不存在,但来自联合 IdP 的电子邮件存在于 EMEA Azure AD B2C 中,则这是一个帐户链接方案。

  6. 从目录中读取用户,并确定在该帐户中启用了哪些身份验证方法。 显示一个屏幕,供用户使用此帐户中的现有身份验证方法登录。

  7. 在用户证明其拥有 Azure AD B2C 中的帐户后,将新的社交 ID 添加到现有帐户,并将社交 ID 添加到全局查找表中的帐户。

  8. 区域租户向应用颁发令牌。

使用匹配条件的差旅用户帐户链接

此方案演示用户在区域之外如何执行帐户链接。

屏幕截图显示了差旅用户合并/链接帐户的流程。

  1. NOAM 的用户尝试在 myapp.fr 上登录。 如果该用户未定向到其本地主机名,则流量管理器将强制执行重定向。

  2. 用户登陆到 EMEA 租户。

  3. 用户选择使用联合标识提供者/社交 IdP 登录。

  4. 在全局查找表中对从联合 IdP 返回的 ID 执行查找。

  5. 如果该 ID 不存在,并且来自联合 IdP 的电子邮件存在于另一个区域,则这是一个差旅用户帐户链接方案。

  6. 创建一个 id_token_hint 链接,用于断言用户当前收集的声明。 使用联合启动进入 NOAM Azure AD B2C 租户之旅。 用户将通过 NOAM Azure AD B2C 租户证明其拥有该帐户。

    注意

    此方法用于重复使用主租户中的现有帐户链接逻辑,并减少使用外部 API 调用来操作标识集合。 可在此处找到利用 id_token_hint 的自定义策略示例。

  7. 在用户证明其拥有 Azure AD B2C 中的帐户后,通过对 NOAM Azure AD B2C 租户发出 Graph API 调用,将新的社交 ID 添加到现有帐户。 将社交 ID 添加到全局查找表中的帐户。

  8. 区域租户向应用颁发令牌。

后续步骤