使用 otherWellKnownObjects 属性启用重命名安全绑定

Container 类的对象具有 otherWellKnownObjects 属性,可用于将 GUID 与容器中子对象的可分辨名称 (DN) 关联。 如果移动或重命名子对象,Active Directory 服务器会更新该子对象的 otherWellKnownObjects 值中的 DN。 这样就可以使用 WKGUID 绑定功能,通过 GUID 和容器的 DN(而不是子对象的 DN)绑定到子对象。

otherWellKnownObjects 属性等效于 wellKnownObjects 属性,但应用程序和服务可以编写 otherWellKnownObjects 值,但只有系统可以编写 wellKnownObjects

在以下情况下,即特定容器对象需要重命名安全绑定的情况,使用 otherWellKnownObjects 属性和 WKGUID 绑定非常有用。

如果容器对象包含其他重要对象,或者可以重命名或移动重要对象。

如果容器对象的每个实例都存在重要对象。 例如,系统使用每个 domainDNS 对象的 wellKnownObjects 属性来存储用户容器的值,这些值存在于 domainDNS 对象的每个实例中。 这样,可以通过指定 domainDNS 容器的已知 GUID 和 DN,应用程序可采用重命名安全方式绑定到用户容器。 同样,应用程序可以使用容器的 otherWellKnownObjects 属性。

如果重要对象需要重命名安全绑定和/或搜索功能。

添加重命名安全绑定和搜索功能

  1. 在该容器中创建重要对象时,将值添加到容器对象的 otherWellKnownObjects 属性。 该值包含表示已知对象的 GUID。 请注意,这不是该对象 objectGUIDdistinguishedName
  2. 使用 WKGUID 绑定功能绑定到重要对象或搜索重要对象。

otherWellKnownObjects 属性可以有多个值,并包含在其中进行设置的容器中已知对象的 GUID/DN 元组。 otherWellKnownObjects 属性具有 DNWithBinary 语法,其中值采用以下形式:

B:<char count>:<well known GUID>:<object DN>

在此示例中,“<char count>”是“<well known GUID>”中十六进制数字的计数,对于 otherWellKnownObjectswellKnownObjects,该数字是 32(GUID 中的十六进制数字数)。 “<well known GUID>”是已知 GUID 的十六进制数字表示形式。 “<object DN>”是由此 WKO 值表示的对象的可分辨名称。 服务器维护每个 wellKnownObjectsotherWellKnownObjects 值的 ObjectDN 部分,以便包含最初在创建值时指定的对象的当前可分辨名称。

例如,如果 {df447b5e-aa5b-11d2-8d53-00c04f79ab81} 是 Fabrikam.com 域中 MyContainer 容器中 MyObject 对象的已知 GUID,则 otherWellKnownObjects 值将指定已知 GUID 和 MyObject DN:

B:32:df447b5eaa5b11d28d5300c04f79ab81:cn=MyObject,cn=MyContainer,dc=Fabrikam,dc=com

若要绑定到此对象,请使用以下 WKGUID 绑定字符串,以指定对象的已知 GUID 和容器 DN:

LDAP://<WKGUID=df447b5eaa5b11d28d5300c04f79ab81,cn=MyContainer,dc=Fabrikam,dc=com>

绑定到此对象后,可以使用 ADSI COM 接口搜索、读取、修改或删除对象。

有关详细信息和演示如何将对象添加到 otherWellKnownObjects 属性的代码示例,请参阅创建容器对象的示例代码