本文解答了有关 API 驱动的入站预配的常见问题(常见问题解答)。
新的入站预配 /bulkUpload API 与 MS Graph 用户 API 有何不同?
预配 /bulkUpload API 与 MS Graph 用户 API 终结点之间存在显著差异。
- 有效负载格式:MS Graph 用户 API 终结点需要 OData 格式的数据。 新入站预配 /bulkUpload API 的请求有效负载格式使用 SCIM 架构构造。 调用此 API 时,请将“Content-Type”标头设置为
application/scim+json。 - 操作结果:
- 将标识数据发送到 MS Graph 用户 API 终结点时,将立即处理该数据,并在 Microsoft Entra 用户配置文件上执行创建/更新/删除作。
- Microsoft Entra 预配服务 以异步 方式处理发送到预配 /bulkUpload API 的请求数据。 预置任务应用 IT 管理员配置的范围规则、属性映射和转换。这将启动对 Microsoft Entra 用户配置文件或本地 AD 用户配置文件的
Create/Update/Delete操作。
- IT 管理员保留控制权:使用 API 驱动的入站预配,IT 管理员可以更控制传入标识数据的处理方式,并将其映射到Microsoft Entra 属性。 他们可以定义范围规则,以排除某些类型的标识数据(例如承包商数据),并使用转换函数在设置用户配置文件上的属性值之前派生新值。
入站预配 /bulkUpload API 是否为标准 SCIM 终结点?
MS Graph 入站预配 /bulkUpload API 在请求有效负载中使用 SCIM 架构,但它 不是 标准化的 SCIM API 终结点。 原因如下。
通常,SCIM 服务终结点使用 SCIM 有效负载来处理 HTTP 请求(POST、PUT、GET),并将其转换为在身份存储上的相应操作(创建、更新、查找)。 SCIM 服务终结点将确定操作语义(创建/更新/删除标识)的责任放在 SCIM API 客户端上。 此机制适用于 API 客户端知道希望为身份存储中的用户执行哪些操作的情况。
MS Graph 入站预配 /bulkUpload 旨在处理由三个独特要求塑造的不同企业标识集成场景:
- 能够以异步方式批量处理记录(例如,处理 50K+ 条记录)
- 能够在有效负载中包含任何标识属性(例如 costCenter、pay grade、badgeId)
- 支持不知道操作语义的 API 客户端。 这些客户端是仅有权访问原始 源数据的 非 SCIM API 客户端(例如 CSV 文件、SQL 表或 HR 记录中的记录)。 这些客户端不具备读取每条记录和确定标识存储上
Create/Update/Delete的操作语义的处理能力。
MS Graph 入站预配 /bulkUpload API 的主要目标是让客户从 任何 标识数据源(例如 CSV/SQL/HR)发送 任何 标识数据(例如,costCenter、付费等级、badgeId),以便通过 Microsoft Entra 预配服务最终处理。 Microsoft Entra 预配服务会处理在此终结点接收到的批量有效负载数据,使用由 IT 管理员配置的属性映射规则,确定这些数据是否会导致在目标身份存储(Microsoft Entra ID 或本地 AD)中进行创建、更新、启用或禁用操作。
预配 /bulkUpload API 是否支持本地 Active Directory 域作为目标?
是的,预配 API 支持本地 AD 域作为目标。
如何获取预配应用的 /bulkUpload API 终结点?
/bulkUpload API 仅适用于以下类型的应用:“API 驱动的 Microsoft Entra ID 入站预配”和“API 驱动的本地 Active Directory 入站预配”。 可以从“预配”边栏选项卡主页检索每个预配应用的唯一 API 终结点。 在截至目前的统计信息>查看技术信息中,复制“预配 API 终结点”URL。
它具有以下格式:
https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/bulkUpload
如何使用预配 /bulkUpload API 执行完全同步?
若要执行完全同步,请使用 API 客户端以批量请求的形式将所有用户的数据从受信任的源发送到 API 终结点。 将所有数据发送到 API 终结点后,下一个同步周期将处理所有用户记录,并允许使用预配日志 API 终结点跟踪进度。
如何使用预配 /bulkUpload API 执行增量同步?
若要执行增量同步,请使用 API 客户端仅发送有关其数据在受信任源中已更改的用户的信息。 将所有数据发送到 API 终结点后,下一个同步周期将处理所有用户记录,并允许使用预配日志 API 终结点跟踪进度。
重启预配的工作原理是什么?
仅在需要时使用 “重启预配 ”选项。 以下是其工作原理:
方案 1: 单击“ 重启预配 ”按钮且作业当前正在运行时,该作业将继续处理已暂存的现有数据。 重启预配作不会中断现有周期。 在后续周期中,预配服务会清除任何托管项,并选取要处理的新批量请求。
方案 2: 单击“ 重启预配 ”按钮且作业 未 运行,然后在运行后续周期之前,预配引擎将清除在重启之前上传的数据,清除任何托管项,并且仅处理新的传入数据。
如何使用配置/bulkUpload API 端点创建用户?
下面是与 /bulkUpload API 终结点关联的预配作业处理传入用户有效负载的方式:
- 该作业检索预配作业的属性映射并记下匹配的属性对(默认情况下
externalId,API 属性用于在 Microsoft Entra ID 中匹配employeeId)。 - 可以更改此默认属性匹配对。
- 作业提取批量请求有效负载中存在的每个操作。
- 该作业检查请求中的值匹配标识符(默认情况下为属性
externalId),并使用它来检查是否存在具有匹配employeeId值的 Microsoft Entra ID 中的用户。 - 如果作业找不到匹配的用户,则该作业将应用同步规则并在目标目录中创建新用户。
若要确保正确的用户是在 Microsoft Entra ID 中创建的,请在映射中定义正确的匹配属性对,以唯一标识源中的用户并Microsoft Entra ID。
如何为 UPN 生成唯一值?
预配服务不具备检查 userPrincipalName(UPN)重复性和处理冲突的功能。 如果 UPN 属性的默认同步规则生成现有的 UPN 值,则用户创建操作将失败。
下面是可用于生成唯一 UPN 的一些选项:
- 在 API 客户端中添加用于唯一 UPN 生成的逻辑。
- 更新 UPN 属性的同步规则以使用 RandomString 函数并将应用映射参数设置为
On object creation only。 示例:
Join("", Replace([userName], , "(?<Suffix>@(.)*)", "Suffix", "", , ), RandomString(3, 3, 0, 0, 0, ), "@", DefaultDomain())
- 如果要预配到本地 Active Directory,则可以使用 SelectUniqueValue 函数并将应用映射参数
On object creation only设置为 。
如何向预配 /bulkUpload API 终结点发送更多 HR 属性?
默认情况下,API 终结点支持处理属于 SCIM 核心用户和企业用户架构的任何属性。 如果要发送更多属性,可以扩展预配应用架构,将新属性映射到 Microsoft Entra 属性,并更新批量请求以发送这些属性。 请参阅本教程 扩展 API 驱动的预配以同步自定义属性。
如何从预配流中排除某些用户?
你可能想要将所有用户发送到 API 终结点,但仅在预配流中包含特定用户并排除其余用户的情况。
可以使用 范围筛选器实现此目的。 在预配应用配置中,可以定义源对象范围,并使用“包含规则”(例如,仅处理部门等于“销售”的用户)或“排除规则”(例如,排除属于“销售”、部门不等于“销售”的用户)将某些用户排除在处理之外。
如何使用预配 /bulkUpload API 终结点更新用户?
下面是与 /bulkUpload API 终结点关联的预配作业处理传入用户有效负载的方式:
- 预配作业检索预配作业的属性映射,并记下匹配的属性对(默认情况下,
externalIdAPI 属性用于在 Microsoft Entra ID 中与employeeId匹配)。 可以更改此默认属性匹配对。 - 作业从批量请求有效负载中提取操作。
- 该作业检查 SCIM 请求(默认情况下:API 属性
externalId)中的值匹配标识符,并使用它来检查是否存在具有匹配employeeId值的 Microsoft Entra ID 中的用户。 - 如果作业找到匹配的用户,则会应用同步规则并比较源和目标配置文件。
- 如果作业确定某些值已更改,则会更新目录中的相应用户记录。
若要确保在 Microsoft Entra ID 中更新正确的用户,请确保在映射中定义正确的匹配属性对,以唯一标识源和 Microsoft Entra ID 中的用户。
是否可以创建支持 API 驱动的入站预配的多个应用?
是的,可以。 下面是可能需要多个预配应用的一些方案:
方案 1: 假设你有三个受信任的数据源:一个用于员工,一个用于承包商,一个用于供应商。 可以创建三个单独的预配应用 - 每个标识类型都有其自己的不同属性映射。 每个预配应用都有一个唯一的 API 终结点,可以将相应的有效负载发送到每个终结点。
可以从“预配”边栏选项卡主页检索每个作业的唯一 API 终结点。 导航到 截止目前的统计信息>查看技术信息,然后复制 配置 API 终结点 URL。
方案 2: 假设你有多个事实来源,每个来源都有其自己的属性集。 例如,HR 提供职位信息属性(例如 jobTitle、employeeType),而徽章系统提供徽章信息属性(例如 badgeId,使用扩展属性表示)。 在此方案中,可以配置两个预配应用:
预配应用 #1 ,用于从 HR 源接收属性并创建用户。
预配应用 #2 ,用于从 Badging 系统接收属性,并且仅更新用户属性。 此应用中的属性映射仅限于徽章信息属性,并且仅在“目标对象操作”下启用更新。
这两个应用使用相同的匹配标识符对 (
externalId<->employeeId)
如何使用 /bulkUpload API 端点处理终止请求?
若要处理终止,请在源中标识一个属性,该属性将用于在 Microsoft Entra ID 中设置 accountEnabled 标志。 如果要预配到本地 Active Directory,请将该源属性映射到该 accountDisabled 属性。
默认情况下,与 SCIM Core User 架构属性 active 关联的值确定目标目录中用户帐户的状态。
如果属性设置为 true,则默认映射规则将启用帐户。 如果属性设置为 false,则默认映射规则将禁用该帐户。
如何防止意外禁用/删除用户?
若要防止和恢复意外删除,建议在预配应用中 配置意外删除阈值 并 启用本地 Active Directory 回收站。 在预配应用“属性映射”边栏选项卡的“目标对象操作”下禁用“删除”操作。
恢复已删除的帐户
- 如果操作的目标目录为 Microsoft Entra ID,则会软删除匹配的用户。 用户可以在接下来的 30 天内在 Microsoft Entra 管理中心 的“已删除用户 ”页面上看到,并且可以在此期间还原。
- 如果作的目标目录是本地 Active Directory,则会硬删除匹配的用户。 如果 启用了 Active Directory 回收站 ,则可以还原已删除的本地 AD 用户对象。
是否需要在每个请求中从 HR 系统发送所有用户?
否,不需要在每个请求中从 HR 系统发送所有用户/“事实来源”。 只需发送您想要创建或更新的用户信息。
API 是否支持所有的 HTTP 操作(GET/POST/PUT/PATCH)?
否,/bulkUpload 预配 API 终结点仅支持 HTTP POST 操作。
如果想要更新用户,是否需要发送 PUT/PATCH 请求?
否,API 终结点不支持 PUT/PATCH 请求。 若要更新用户,请在 POST 批量请求有效负载中发送与用户关联的数据。
处理 API 终结点接收的数据的预配置作业会根据配置的同步规则自动检测在 POST 请求有效负载中收到的用户是否需要被创建、更新、启用或禁用。 作为 API 客户端,如果希望更新用户配置文件,则无需再执行任何步骤。
写回功能是如何被支持的?
当前 API 仅支持入站数据。 下面是在实现 Microsoft Entra ID 生成的电子邮件/用户名/电话等属性写回时要考虑的一些选项,这些属性可以流回 HR 系统:
选项 1 - SCIM 与 HR 终结点/代理服务的连接,后者反过来更新 HR 源
- 如果记录系统为用户更新提供 SCIM 终结点,则可以在企业应用库中创建自定义 SCIM 应用程序,并按照文档所述配置预配置。
- 如果记录系统不提供 SCIM 终结点,请探索设置代理 SCIM 服务的可能性,该服务接收更新并将更改传播到 HR 系统。
选项 2 – 对写回方案使用 Microsoft Entra ECMA 连接器
- 根据客户要求,了解是否可以使用其中一个 ECMA 连接器(PowerShell/SQL/Web Services)。
选项 3 - 在联接器工作流中使用生命周期工作流自定义扩展任务
- 在生命周期工作流中,定义联接器工作流并定义 调用逻辑应用进程的自定义扩展任务,该任务更新 HR 系统或生成 HR 系统使用的 CSV 文件。
后续步骤
- 配置 API 驱动的入站预配应用
- 若要详细了解 API 驱动的入站预配,请参阅 入站用户预配 API 概念。