Microsoft Entra Connect Sync:处理 userCertificate 属性导致的 LargeObject 错误
Microsoft Entra ID 针对 userCertificate 属性的最大证书值数目限制为 15 个。 如果 Microsoft Entra Connect 将值超过 15 的对象导出到 Microsoft Entra ID,Microsoft Entra ID 将返回 LargeObject 错误,并显示以下消息:
“预配的对象太大。 请减少此对象上属性值的数目。 在下一同步周期内将重试该操作...”
LargeObject 错误可能由其他 AD 属性导致。 若要确认该错误是否确实由 userCertificate 属性导致,需要在本地 AD 中或同步服务管理器 Metaverse 搜索中验证该对象。
若要获取租户中出现 LargeObject 错误的对象列表,请使用以下方法之一:
- 如果单击最新的“导出到 Microsoft Entra”操作,“Synchronization Service Manager 操作”选项卡将显示出现 LargeObject 错误的对象列表。
缓解选项
在解决 LargeObject 错误之前,对同一对象所做的其他属性更改将无法导出到 Microsoft Entra ID 中。 若要解决该错误,可以考虑以下选项:
将 Microsoft Entra Connect 升级到 1.1.524.0 或更高版本。 在 Microsoft Entra Connect 内部版本 1.1.524.0 中,现成的同步规则已经更新:如果 userCertificate 和 userSMIMECertificate 属性的值超过 15 个,则不会导出这些属性。 有关如何升级 Microsoft Entra Connect 的详细信息,请参阅 Microsoft Entra Connect:从旧版升级到最新版本一文。
在 Microsoft Entra Connect 中实现一个出站同步规则,以便导出包含超过 15 个证书值的对象的 null 值而不是实际值。 如果不需要将包含超过 15 个证书值的对象的任何证书值导出到 Microsoft Entra ID,则此选项不适用。 有关如何实现此同步规则的详细信息,请参阅下一部分实现同步规则以限制 userCertificate 属性的导出。
通过删除你的组织不再使用的值来减少本地 AD 对象中的证书值数(减到 15 个或更少)。 如果已过期或未使用的证书导致属性膨胀,则适合使用此方法。 可以使用 Remove-ADSyncToolsExpiredCertificates 帮助查找、备份和删除内部部署 AD 中的过期证书。 在删除证书之前,我们建议你与组织中的关键基础结构管理员确认。
配置 Microsoft Entra Connect 以将 userCertificate 属性从导出到 Microsoft Entra ID 中排除。 一般情况下,我们不建议使用此选项,因为 Microsoft Online Services 可能会使用该属性来实现特定的方案。 具体而言:
Exchange Online 和 Outlook 客户端使用 User 对象中的 userCertificate 属性进行消息签名和加密。 若要详细了解此功能,请参阅 S/MIME for message signing and encryption(用于消息签名和加密的 S/MIME)一文。
Microsoft Entra ID 使用 Computer 对象中的 userCertificate 属性来让已加入本地域的 Windows 10 设备连接到 Microsoft Entra ID。 要详细了解此功能,请参阅 将加入域的设备连接到Microsoft Entra ID,以获得 Windows 10 体验一文。
实现同步规则以限制 userCertificate 属性的导出
若要解决 userCertificate 属性导致的 LargeObject 错误,可在 Microsoft Entra Connect 中实现一个出站同步规则,以便导出包含超过 15 个证书值的对象的 null 值而不是实际值。 本部分介绍需要执行哪些步骤来为 User 对象实现同步规则。 可以针对 Contact 和 Computer 对象改写这些步骤。
重要
导出 null 值会删除以前已成功导出到 Microsoft Entra ID 的证书值。
步骤归纳如下:
- 禁用同步计划程序,并验证是否没有正在进行的同步操作。
- 查找 userCertificate 属性的现有出站同步规则。
- 创建所需的出站同步规则。
- 验证针对出现 LargeObject 错误的现有对象实施的新同步规则。
- 将新的同步规则应用到出现 LargeObject 错误的其余对象。
- 验证是否没有意外的更改正在等待导出到 Microsoft Entra ID。
- 将更改导出到 Microsoft Entra ID。
- 重新启用同步计划程序。
步骤 1:禁用同步计划程序,并验证是否没有正在进行的同步操作
确保实现新同步规则的中途不会发生同步,以免将意外的更改导出到 Microsoft Entra ID。 若要禁用内置的同步计划程序,请执行以下操作:
在 Microsoft Entra Connect 服务器上启动 PowerShell 会话。
通过运行以下 cmdlet 来禁用计划的同步:
Set-ADSyncScheduler -SyncCycleEnabled $false
注意
前面的步骤仅适用于使用内置计划程序的较新 Microsoft Entra Connect 版本 (1.1.xxx.x)。 如果操作的是使用 Windows 任务计划程序的较旧 Microsoft Entra Connect 版本 (1.0.xxx.x),或者使用自己的自定义计划程序(不常见)来触发定期同步,则需要相应地禁用这种同步。
转到“开始”→“同步服务”,启动“Synchronization Service Manager”。
转到“操作”选项卡,确认是否不存在状态为“正在进行”的操作。
步骤 2:查找 userCertificate 属性的现有出站同步规则
应已启用并配置一个现有的同步规则用于将 User 对象的 userCertificate 属性导出到 Microsoft Entra ID。 请找到此同步规则,确定其优先顺序和范围筛选器配置:
转到“开始”→“同步规则编辑器”,启动“同步规则编辑器”。
使用以下值配置搜索筛选器:
Attribute Value 方向 Outbound MV 对象类型 Person 连接器 Microsoft Entra 连接器的名称 连接器对象类型 user MV 属性 userCertificate 如果使用 Microsoft Entra 连接器的 OOB(现成)同步规则来导出 User 对象的 userCertficiate 属性,则应取回“Out to Microsoft Entra ID - User ExchangeOnline”规则。
记下此同步规则的优先顺序值。
选择该同步规则,并单击“编辑”。
在“编辑保留的规则确认”弹出对话框中单击“否”。 (不要担心,我们不会对此同步规则进行任何更改)。
在编辑屏幕中选择“范围筛选器”选项卡。
记下范围筛选器配置。 如果使用的是 OOB 同步规则,应该正好有一个包含两个子句的范围筛选器组,其中包括:
Attribute 运算符 值 sourceObjectType EQUAL 用户 cloudMastered NOTEQUAL True
步骤 3:创建所需的出站同步规则
新同步规则的范围筛选器必须与现有同步规则相同,其优先顺序必须高于现有同步规则。 这可以确保将新同步规则应用到与现有同步规则相同的一组对象,并重写 userCertificate 属性的现有同步规则。 若要创建同步规则,请执行以下操作:
在同步规则编辑器中,单击“添加新规则”按钮。
在“说明”选项卡下面提供以下配置:
Attribute 值 详细信息 名称 提供名称 例如“Out to Microsoft Entra ID - Custom override for userCertificate” 说明 提供说明 例如“If userCertificate attribute has more than 15 values, export NULL” 连接的系统 选择 Microsoft Entra 连接器 连接的系统对象类型 user Metaverse 对象类型 person 链接类型 Join 优先级 选择介于 1 和 99 之间的数字 选择的数字不能由任何现有同步规则使用,并且值必须小于现有的同步规则(因此优先顺序更高)。 转到“范围筛选器”选项卡,并实现现有同步规则所用的相同范围筛选器。
跳过“联接规则”选项卡。
转到“转换”选项卡,使用以下配置添加一个新的转换:
Attribute Value 流类型 表达式 目标属性 userCertificate 源属性 使用以下表达式: IIF(IsNullOrEmpty([userCertificate]), NULL, IIF((Count([userCertificate])> 15),AuthoritativeNull,[userCertificate]))
单击“添加”按钮创建同步规则。
步骤 4:验证针对出现 LargeObject 错误的现有对象实施的新同步规则
在将创建的同步规则应用到其他对象之前,可以执行此步骤来验证是否可对出现 LargeObject 错误的现有 AD 对象正常运行该规则:
- 在 Synchronization Service Manager 中转到“操作”选项卡。
- 选择最近的“导出到 Microsoft Entra”操作,并单击出现 LargeObject 错误的对象之一。
- 在“连接器空间对象属性”弹出屏幕中,单击“预览”按钮。
- 在“预览”弹出屏幕中选择“完全同步”,并单击“提交预览”。
- 关闭“预览”屏幕和“连接器空间对象属性”屏幕。
- 在 Synchronization Service Manager 中转到“连接器”选项卡。
- 右键单击 Microsoft Entra ID 连接器并选择“运行...”
- 在“运行连接器”弹出窗口中选择“导出”步骤,并单击“确定”。
- 等待完成导出到 Microsoft Entra ID,并确认此特定对象未出现其他 LargeObject 错误。
步骤 5:将新的同步规则应用到出现 LargeObject 错误的其余对象
添加同步规则后,需要在 AD 连接器上运行完全同步步骤:
- 在 Synchronization Service Manager 中转到“连接器”选项卡。
- 右键单击“AD”连接器,并选择“运行...”
- 在“运行连接器”弹出窗口中选择“完全同步”步骤,并单击“确定”。
- 等待完全同步步骤完成。
- 如果有多个 AD 连接器,请针对剩余的 AD 连接器重复上述步骤。 通常,如果有多个本地目录,则需要多个连接器。
步骤 6:验证是否有意外的更改正在等待导出到 Microsoft Entra ID
- 在 Synchronization Service Manager 中转到“连接器”选项卡。
- 右键单击“Microsoft Entra ID 连接器”,并选择“搜索连接器空间”。
- 在“搜索连接器空间”弹出窗口中:
- 将“范围”设置为“挂起的导出”。
- 选中所有 3 个复选框,包括“添加”、“修改”和“删除”。
- 单击“搜索”按钮,返回等待将其更改导出到 Microsoft Entra ID 的所有对象。
- 验证是否没有意外的更改。 若要检查给定对象的更改,请双击该对象。
步骤 7:将更改导出到 Microsoft Entra ID
若要将更改导出到 Microsoft Entra ID:
- 在 Synchronization Service Manager 中转到“连接器”选项卡。
- 右键单击 Microsoft Entra ID 连接器并选择“运行...”
- 在“运行连接器”弹出窗口中选择“导出”步骤,并单击“确定”。
- 等待完成导出到 Microsoft Entra ID,并确认不存在其他 LargeObject 错误。
步骤 8:重新启用同步计划程序
解决问题后,请重新启用内置的同步计划程序:
- 启动 PowerShell 会话。
- 通过运行以下 cmdlet 来重新启用计划的同步:
Set-ADSyncScheduler -SyncCycleEnabled $true
注意
前面的步骤仅适用于使用内置计划程序的较新 Microsoft Entra Connect 版本 (1.1.xxx.x)。 如果操作的是使用 Windows 任务计划程序的较旧 Microsoft Entra Connect 版本 (1.0.xxx.x),或者使用自己的自定义计划程序(不常见)来触发定期同步,则需要相应地禁用这种同步。
后续步骤
详细了解如何将本地标识与 Microsoft Entra ID 集成。