将用户迁移到 Microsoft Entra 外部 ID

本指南介绍了如何将用户和凭据从当前标识提供者(包括 Azure AD B2C)迁移到 Microsoft Entra 外部 ID 的基础知识。 本指南介绍根据当前配置可以使用的不同解决方案。 每种方法都需要编写一个应用程序或脚本,该脚本使用 Microsoft 图形 API 在外部 ID 中创建用户帐户。

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 若要了解详细信息,请参阅常见问题解答中的 Azure AD B2C 是否仍可供购买

先决条件

开始将用户迁移到外部 ID 之前,需要:

准备:目录清理

在开始用户迁移过程之前,应花时间清理旧标识提供者目录中的数据。 这样做有助于确保仅迁移所需的数据,并使迁移过程更加顺利。

  • 确定要存储在 Microsoft Entra 外部 ID 中的用户属性集,仅迁移所需的属性。 如有必要,可以在外部 ID 中 创建自定义属性 ,以存储有关用户的更多数据。
  • 如果要从具有多个身份验证源的环境迁移(例如,每个应用程序都有自己的用户目录),请迁移到外部 ID 中的统一帐户。 可能需要应用自己的业务逻辑来合并和协调来自不同源的同一用户的帐户。
  • 用户名在 Microsoft Entra 外部 ID 中必须是唯一的。 如果多个应用程序使用不同的用户名,则需要应用自己的业务逻辑来协调和合并帐户。 对于密码,让用户选择一个密码,并在目录中设置它。 仅应将所选密码存储在外部 ID 帐户中。
  • 删除未使用的用户帐户,或不迁移过时的帐户。

阶段 1:用户数据迁移

迁移过程中的第一步是将用户数据从旧标识提供者迁移到外部 ID。 这包括用户名和任何其他相关属性。 为此,需要:

  1. 从遗留标识提供者读取用户帐户。
  2. 在外部 ID 目录中创建相应的用户帐户。 有关以编程方式创建用户帐户的信息,请参阅 使用 Microsoft Graph 管理使用者用户帐户
  3. 如果有权访问用户的纯文本密码,则可以在迁移用户数据时直接在新帐户上设置这些密码。 如果无权访问纯文本密码,则应立即设置一个随机密码,该密码将在以后作为密码迁移过程的一部分进行更新。

并非所有旧标识提供者中的信息都需要迁移到外部 ID 目录。 以下建议可帮助你确定要存储在外部 ID 中的相应用户属性集。

以下属性需要存储在 Microsoft Entra 外部 ID 中:

  • 用户名、密码、电子邮件地址、电话号码、成员身份号码/标识符。
  • 隐私政策和最终用户许可协议的同意标识。

请勿 存储在外部 ID 中:

  • 信用卡号、社会安全号码(SSN)、医疗记录或其他受政府或行业合规机构监管的数据等敏感数据。
  • 营销或通信首选项、用户行为和见解。

阶段 2:密码迁移

迁移用户数据后,需要将用户密码从旧标识提供者迁移到外部 ID。 有两种迁移用户密码的建议方法:自助密码重置(SSPR)和无缝迁移。 如果无法访问纯文本用户密码,则需要使用这些方法之一。 例如,如果:

  • 密码存储在 Azure AD B2C 中。
  • 密码以单向加密格式存储,例如使用哈希函数。
  • 密码由旧标识提供者以无法访问的方式存储。 例如,当标识提供者通过调用 Web 服务来验证凭据时。

自助密码重置 (SSPR)

使用外部 ID 中的自助服务密码重置(SSPR)功能,客户可以在首次登录到新系统时手动设置其密码。 此方法易于实现,不需要任何自定义代码。 但是,它确实要求用户手动重置其密码,这可能会对某些用户造成不便。

若要使用此方法,首先需要在外部 ID 租户中设置 SSPR 并配置密码重置策略。 然后,你需要向用户提供有关首次登录时如何使用 SSPR 重置其密码的说明。 例如,可以在用户导航到登录流之前,向用户发送电子邮件,并说明如何重置其密码或在应用中添加说明。

无缝迁移

如果你有大量用户,或者想要提供更无缝的体验,则可以使用无缝迁移方法。 此过程允许用户在将帐户迁移到外部 ID 时继续使用其现有密码。 为此,需要生成自定义 REST API,以验证用户针对旧标识提供者输入的凭据。

无缝迁移过程包括以下步骤:

  1. 将扩展属性添加到标记其迁移状态的用户帐户。
  2. 客户登录时,读取与输入的电子邮件地址对应的外部 ID 用户帐户。
  3. 如果客户帐户已标记为已迁移,请继续执行登录过程。
  4. 如果未将用户帐户标记为已迁移,请验证针对旧标识提供者输入的密码。
    1. 如果传统 IdP 确定密码不正确,请向用户返回友好的错误信息。
    2. 如果旧 IdP 确定密码正确,请使用 REST API 将密码写入外部 ID 帐户,并更改扩展属性以将帐户标记为已迁移。

无缝迁移分为两个阶段。 首先,将收集旧凭据并将其存储在外部 ID 中。 然后,为足够数量的用户更新凭据后,可以迁移应用程序以使用外部 ID 直接进行身份验证。 此时,迁移的用户可以继续使用其现有凭据。 首次登录时,任何尚未迁移的用户都需要重置其密码。

无缝迁移过程的高级设计如下图所示:

从旧标识提供者中获取凭据,并在外部 ID 中更新相应的帐户。

显示凭据迁移第一阶段的高级设计图。

停止获取凭据并迁移应用程序以使用外部 ID 进行身份验证。 停用旧的身份提供者。

该图表显示凭据迁移第二阶段的高层次设计。

注释

如果使用此方法,请务必保护 REST API 免受暴力攻击。 攻击者可以提交多个密码,希望最终猜出用户的凭据。 为了帮助击败此类攻击,请在登录尝试次数通过特定阈值时停止向 REST API 提供服务请求。