清除属性值(预览版)

Microsoft Entra预配可以在相应的源属性为 null 或空时清除现有目标属性值。 这项功能也称为“空值预配”,当某个值从记录源系统中删除,且目标系统中的对应值也必须被删除时,它就非常有用。

Note

清除属性值当前处于预览阶段。 我们会根据适用于预览版的条款向客户提供预览版。 联机服务的总体 Microsoft 产品条款中概述了这些术语。

清除属性值的配置在受支持的预配集成之间是一致的。 但是,源架构编辑器和源系统表示 null 值的方式可能因集成而异。

预览范围和限制

  • 清除属性值功能现已在 API 驱动的入站预配中提供预览版,适用于:
    • Microsoft Entra ID。
    • 本地部署的 Active Directory。
  • 仅支持清除单值属性的属性值。
  • 可以为 自定义安全属性预配启用此功能。
  • 目前不支持清除属性值:
    • 出站应用程序预配场景。
    • 从 Workday 或 SAP SuccessFactors 进行入站预配。
  • 不支持清除多值属性。

如何清除属性值

默认情况下,清除属性值处于禁用状态,它是一项选择加入功能。 清除属性值使用双门保护机制来帮助防止意外数据丢失。 必须为源属性及其对应的目标映射启用 Flow null 值 选项。

源值 启用清除时的结果
该属性具有非空值。 预配服务使用已配置的属性映射来评估该值。
该属性具有 null 或空值。 在更新期间,预配服务从映射的目标属性中清除现有值。
对于通过 API 驱动的预配,假设你省略了一个为其启用了 null 流的属性。 在更新期间,预配服务将属性视为空,并清除现有的映射目标值。

在用户创建时,除非配置了 默认值(如果为 null),否则 null、空或省略的源值不会填充目标属性。 默认值仅在创建过程中适用。 在更新期间,预配服务会清除目标值,而不是应用创建时间默认值。

Note

仅针对那些在源值为空或为 null 时必须清除现有目标值的属性配置属性值清除。 不要为匹配或创建用户所需的属性启用它。

先决条件

在开始之前,请确保:

若要向本地 Active Directory 进行 API 驱动的入站预配,请先查看附加的 角色和服务器先决条件,然后配置预配代理和 Active Directory 连接

为源属性启用 null 值流

首先,将源架构属性配置为传递空值。 源架构编辑器的名称因预配集成而异。

  1. 以至少应用程序管理员身份登录到Microsoft Entra 管理中心
  2. 浏览到 Entra ID>企业应用
  3. 搜索并选择预配应用程序。
  4. 选择 预配>属性映射
  5. 打开要配置的对象的属性映射。
  6. 展开 “高级”选项,然后选择用于编辑源属性列表的选项。 选项名称标识源系统或连接器。
  7. 传递空值 列中,为每个可清除其映射的目标属性的源属性选中复选框。
  8. 选择“保存”

在目标映射中启用空值传递

接下来,为每个相应的目标属性映射启用 null 值流。

  1. 返回到 “属性映射 ”页。
  2. 选择要清除的目标属性的映射。
  3. 选择 Flow null 值
  4. 选择 “确定” 关闭映射编辑器。
  5. 选择 “保存” 以保存属性映射。
  6. 对必须接受 null 值的每个目标属性重复这些步骤。

这两个设置是必需的。 如果未为源架构属性或目标映射选择 Flow null 值 ,则预配服务不会使用 null 或空源值来清除目标属性。

API 驱动的预配示例

以下示例演示如何配置 API 驱动的入站预配以清除属性值并在请求中 /bulkUpload 发送 null 或空值。

在源架构中启用 null 值流

对于 API 驱动的预配,请展开 “高级”选项,然后选择“ 编辑 API 用户属性”。 找到 Flow null 值 列,并选择可以发送 null 或空值的源属性。 在下面的示例中,已为 SCIM 扩展属性 divisiondepartment 启用 Flow null values。 此设置指示预配服务处理这些属性的 null 或空值,并评估 null 流的目标属性映射。

突出显示 API 用户属性架构中的 Flow null 值列的屏幕截图。

API 用户属性的截图,其中为 division 和 department 属性选择了 Flow null 值。

Note

仅在源属性上启用该选项并不会清除目标值;目标映射还必须允许 null 值传递,如下一节所述。

在目标映射中启用空值传递

打开每个相应的目标属性映射,然后选择 传递 null 值。 以下示例将源 SCIM 扩展属性映射到Active Directory属性departmentdepartment并启用 Flow null 值,以便在源 SCIM 属性为 null 或为空时,属性值department在Active Directory中清除。

已选择 Flow 空值的属性映射截图。

发送 null 或空值

将属性包含在请求中 /bulkUpload ,并将其值设置为 JSON null 或空字符串。

Important

对于由 API 驱动的预配,启用 Flow null 值 会改变对部分负载的处理方式。 例如,如果你省略了某个已启用 null 流的源属性,则预配服务将清除其映射的目标值。 因此,不完整或部分源有效负载可能会无意中清除现有属性值。 最佳做法是在每个批量请求中包含完整的源用户记录,用于完整同步和增量同步,并使用显式 JSON null 或空字符串请求确定性清除。

以下摘录清除匹配用户的现有 departmentdivision 值:

{
  "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 驱动的入站预配快速入门

验证是否已清除属性

预配服务处理请求后,验证预配日志和目标目录的结果。

  1. 在预配应用中,选择 “预配日志”。

  2. 打开该用户的预配事件。

  3. 选择 “修改的属性 ”选项卡。

  4. 确认目标属性显示为空的新值。

    修改后属性的屏幕截图,其中公司和部门的新值为空。

  5. 验证该属性在目标系统中的对象上是否不再具有值。

在此本地 Active Directory示例中,API 源属性division映射到目标属性company。 对于本地 Active Directory,预配服务删除属性值,而不是编写空字符串。

排查清除属性值问题

如果未清除目标属性,请使用以下指南。

問题 解决方案
忽略 null 或空值。 确认源架构属性和目标映射均已选择 传递 null 值
清除了错误的目标属性。 查看属性映射并确认源属性映射到预期的目标属性。
源中使用的是占位符值,而不是 null 值。 配置源集成以返回 null 或空值,而不是占位符,或在预配之前转换占位符。
API 驱动的预配请求无法清除该属性。 使用显式 JSON null 或空字符串值。 如果你通过省略某个子属性来实现这一点,请确认包含该子属性的复杂对象或集合元素仍保留在有效负载中。 还要确认有效负载匹配属性能够识别现有的目标用户。
API 驱动的预配请求意外清除属性。 确认未从有效负载中省略该属性。 每当想要保留现有目标值时,请包含其当前非空值。

后续步骤