Microsoft Entra预配可以在相应的源属性为 null 或空时清除现有目标属性值。 这项功能也称为“空值预配”,当某个值从记录源系统中删除,且目标系统中的对应值也必须被删除时,它就非常有用。
Note
清除属性值当前处于预览阶段。 我们会根据适用于预览版的条款向客户提供预览版。 联机服务的总体 Microsoft 产品条款中概述了这些术语。
清除属性值的配置在受支持的预配集成之间是一致的。 但是,源架构编辑器和源系统表示 null 值的方式可能因集成而异。
预览范围和限制
- 清除属性值功能现已在 API 驱动的入站预配中提供预览版,适用于:
- Microsoft Entra ID。
- 本地部署的 Active Directory。
- 仅支持清除单值属性的属性值。
- 可以为 自定义安全属性预配启用此功能。
- 目前不支持清除属性值:
- 出站应用程序预配场景。
- 从 Workday 或 SAP SuccessFactors 进行入站预配。
- 不支持清除多值属性。
如何清除属性值
默认情况下,清除属性值处于禁用状态,它是一项选择加入功能。 清除属性值使用双门保护机制来帮助防止意外数据丢失。 必须为源属性及其对应的目标映射启用 Flow null 值 选项。
| 源值 | 启用清除时的结果 |
|---|---|
| 该属性具有非空值。 | 预配服务使用已配置的属性映射来评估该值。 |
| 该属性具有 null 或空值。 | 在更新期间,预配服务从映射的目标属性中清除现有值。 |
| 对于通过 API 驱动的预配,假设你省略了一个为其启用了 null 流的属性。 | 在更新期间,预配服务将属性视为空,并清除现有的映射目标值。 |
在用户创建时,除非配置了 默认值(如果为 null),否则 null、空或省略的源值不会填充目标属性。 默认值仅在创建过程中适用。 在更新期间,预配服务会清除目标值,而不是应用创建时间默认值。
Note
仅针对那些在源值为空或为 null 时必须清除现有目标值的属性配置属性值清除。 不要为匹配或创建用户所需的属性启用它。
先决条件
在开始之前,请确保:
- 你至少具有 应用程序管理员 角色。
- 你配置了预配应用程序及其属性映射。
- 源属性存在于预配应用程序架构中,并且具有目标属性映射。 若要了解详细信息,请参阅自定义Microsoft Entra属性映射。
若要向本地 Active Directory 进行 API 驱动的入站预配,请先查看附加的 角色和服务器先决条件,然后配置预配代理和 Active Directory 连接。
为源属性启用 null 值流
首先,将源架构属性配置为传递空值。 源架构编辑器的名称因预配集成而异。
- 以至少应用程序管理员身份登录到Microsoft Entra 管理中心。
- 浏览到 Entra ID>企业应用。
- 搜索并选择预配应用程序。
- 选择 预配>属性映射。
- 打开要配置的对象的属性映射。
- 展开 “高级”选项,然后选择用于编辑源属性列表的选项。 选项名称标识源系统或连接器。
- 在 传递空值 列中,为每个可清除其映射的目标属性的源属性选中复选框。
- 选择“保存”。
在目标映射中启用空值传递
接下来,为每个相应的目标属性映射启用 null 值流。
- 返回到 “属性映射 ”页。
- 选择要清除的目标属性的映射。
- 选择 Flow null 值。
- 选择 “确定” 关闭映射编辑器。
- 选择 “保存” 以保存属性映射。
- 对必须接受 null 值的每个目标属性重复这些步骤。
这两个设置是必需的。 如果未为源架构属性或目标映射选择 Flow null 值 ,则预配服务不会使用 null 或空源值来清除目标属性。
API 驱动的预配示例
以下示例演示如何配置 API 驱动的入站预配以清除属性值并在请求中 /bulkUpload 发送 null 或空值。
在源架构中启用 null 值流
对于 API 驱动的预配,请展开 “高级”选项,然后选择“ 编辑 API 用户属性”。 找到 Flow null 值 列,并选择可以发送 null 或空值的源属性。 在下面的示例中,已为 SCIM 扩展属性 division 和 department 启用 Flow null values。 此设置指示预配服务处理这些属性的 null 或空值,并评估 null 流的目标属性映射。
Note
仅在源属性上启用该选项并不会清除目标值;目标映射还必须允许 null 值传递,如下一节所述。
在目标映射中启用空值传递
打开每个相应的目标属性映射,然后选择 传递 null 值。 以下示例将源 SCIM 扩展属性映射到Active Directory属性departmentdepartment并启用 Flow null 值,以便在源 SCIM 属性为 null 或为空时,属性值department在Active Directory中清除。
发送 null 或空值
将属性包含在请求中 /bulkUpload ,并将其值设置为 JSON null 或空字符串。
Important
对于由 API 驱动的预配,启用 Flow null 值 会改变对部分负载的处理方式。 例如,如果你省略了某个已启用 null 流的源属性,则预配服务将清除其映射的目标值。 因此,不完整或部分源有效负载可能会无意中清除现有属性值。 最佳做法是在每个批量请求中包含完整的源用户记录,用于完整同步和增量同步,并使用显式 JSON null 或空字符串请求确定性清除。
以下摘录清除匹配用户的现有 department 和 division 值:
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:BulkRequest"
],
"Operations": [
{
"method": "POST",
"bulkId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"path": "/Users",
"data": {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"externalId": "701984",
"userName": "bjensen@example.com",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"department": null,
"division": ""
}
}
}
],
"failOnErrors": null
}
使用预配应用架构中的源属性名称。 确保请求包含配置所需的匹配属性,例如 externalId。
有关提交请求的说明,请参阅 使用 cURL 进行 API 驱动的入站预配快速入门。
验证是否已清除属性
预配服务处理请求后,验证预配日志和目标目录的结果。
在此本地 Active Directory示例中,API 源属性division映射到目标属性company。
对于本地 Active Directory,预配服务删除属性值,而不是编写空字符串。
排查清除属性值问题
如果未清除目标属性,请使用以下指南。
| 問题 | 解决方案 |
|---|---|
| 忽略 null 或空值。 | 确认源架构属性和目标映射均已选择 传递 null 值。 |
| 清除了错误的目标属性。 | 查看属性映射并确认源属性映射到预期的目标属性。 |
| 源中使用的是占位符值,而不是 null 值。 | 配置源集成以返回 null 或空值,而不是占位符,或在预配之前转换占位符。 |
| API 驱动的预配请求无法清除该属性。 | 使用显式 JSON null 或空字符串值。 如果你通过省略某个子属性来实现这一点,请确认包含该子属性的复杂对象或集合元素仍保留在有效负载中。 还要确认有效负载匹配属性能够识别现有的目标用户。 |
| API 驱动的预配请求意外清除属性。 | 确认未从有效负载中省略该属性。 每当想要保留现有目标值时,请包含其当前非空值。 |