你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将用户迁移到 Azure AD B2C

从另一标识提供者迁移到 Azure Active Directory B2C (Azure AD B2C) 可能还需要迁移现有的用户帐户。 本文介绍两种迁移方法:预迁移和无缝迁移。 无论使用哪种方法,都需要编写一个应用程序或脚本,以使用 Microsoft Graph API 在 Azure AD B2C 中创建用户帐户。

观看此视频以了解 Azure AD B2C 用户迁移策略和要考虑的步骤。

注意

在开始迁移之前,请确保 Azure AD B2C 租户的未使用配额可以容纳你希望迁移的所有用户。 了解如何获取租户使用情况。 如果需要提高租户的配额限制,请联系 Microsoft 支持部门

预迁移

在预迁移流中,迁移应用程序将对每个用户帐户执行以下步骤:

  1. 读取旧标识提供者中的用户帐户,包括其当前凭据(用户名和密码)。
  2. 使用当前凭据在 Azure AD B2C 目录中创建相应的帐户。

对于以下两种情况,请使用预迁移流:

  • 你有权访问用户的纯文本凭据(用户名和密码)。
  • 凭据已加密,但可将其解密。

有关以编程方式创建用户帐户的信息,请参阅使用 Microsoft Graph 管理 Azure AD B2C 用户帐户

无缝迁移

如果无法访问旧标识提供者中的纯文本密码,请使用无缝迁移流。 例如,在以下情况下使用该流:

  • 密码是以单向加密格式存储的(例如,使用哈希函数)。
  • 旧式标识提供者以你无法访问的方式存储了密码。 例如,标识提供者通过调用 Web 服务来验证凭据。

无缝迁移流仍需将用户帐户预迁移,但随后需使用自定义策略来查询某个 REST API(由你创建),以便在每个用户首次登录时设置其密码。

无缝迁移流包括两个阶段:预迁移和设置凭据。

阶段 1:预迁移

  1. 迁移应用程序读取旧标识提供者中的用户帐户。
  2. 迁移应用程序在 Azure AD B2C 目录中创建相应的用户帐户,但设置生成的随机密码。

阶段 2:设置凭据

将帐户预迁移完以后,自定义策略和 REST API 随后会在用户登录时执行以下操作:

  1. 读取对应于所输入的电子邮件地址的 Azure AD B2C 用户帐户。
  2. 通过评估某个布尔扩展属性来检查是否已将该帐户标记为待迁移。
    • 如果该扩展属性返回 True,则会调用 REST API 根据旧标识提供者验证密码。
      • 如果 REST API 确定密码不正确,则向用户返回友好的错误消息。
      • 如果 REST API 确定密码正确,则将密码写入 Azure AD B2C 帐户,并将该布尔扩展属性更改为 False
    • 如果该布尔扩展属性返回 False,则像平时一样继续执行登录过程。

若要查看示例自定义策略和 REST API,请参阅 GitHub 上的无缝用户迁移示例

用户无缝迁移方法的流程图

安全性

无缝迁移方法使用你自己的自定义 REST API 根据旧标识提供者验证用户的凭据。

必须保护 REST API,使其免遭暴力破解攻击。 攻击者可能会提交多个密码,最终猜出用户的凭据。 为了帮助抵御此类攻击,请在登录尝试次数超过特定的阈值时,停止向 REST API 提供请求。 此外,请保护 Azure AD B2C 与 REST API 之间的通信。 若要了解如何保护用于生产的 RESTful API,请参阅保护 RESTful API

用户属性

并非要将旧标识提供者中的所有信息都迁移到 Azure AD B2C 目录。 在迁移之前,请确定要存储在 Azure AD B2C 中的适当用户属性集。

  • 要存储在 Azure AD B2C 中:
    • 用户名、密码、电子邮件地址、电话号码、会员号/标识符。
    • 隐私策略和最终用户许可协议的同意标记。
  • 不要存储在 Azure AD B2C 中:
    • 敏感数据,例如信用卡号、社会安全号码 (SSN)、医疗记录,或其他由政府或行业法规实体管制的数据。
    • 营销或沟通偏好、用户行为和见解。

目录清理

在启动迁移过程之前,请借机清理目录。

  • 确定要存储在 Azure AD B2C 中的用户属性集,仅迁移所需的属性。 如有需要,可以创建自定义属性来存储有关用户的更多数据。
  • 如果从包含多个身份验证源的环境迁移(例如,每个应用程序具有自身的用户目录),请迁移到 Azure AD B2C 中的统一帐户。
  • 如果多个应用程序具有不同的用户名,可以使用标识集合将其全部存储在 Azure AD B2C 用户帐户中。 关于密码,请让用户选择一个密码,并在目录中设置该密码。 例如,使用无缝迁移时,只应在 Azure AD B2C 帐户中存储所选的密码。
  • 删除未使用的用户帐户或者不迁移已过时的帐户。

密码策略

如果与 Azure AD B2C 强制实施的强密码强度相比,所要迁移的帐户的密码强度更弱,你可以禁用强密码要求。 有关详细信息,请参阅密码策略属性

后续步骤

GitHub 上的 azure-ad-b2c/user-migration 存储库包含了无缝迁移自定义策略示例和 REST API 代码示例:

无缝用户迁移自定义策略和 REST API 代码示例