2

我正在编写一些代码来使用 Active Directory。此代码包括根据帐户名称拉回用户,然后获取直接报告和获取组成员资格的功能(这些可以递归或非递归运行,具体取决于是否需要完整的层次结构)。我已经看到了一些关于如何做到这一点的答案。然而,所有答案似乎都依赖于专有名称。

专有名称是用于在活动目录中关联这些对象的外键(在数据库术语中)吗?我的直觉表明 objectGuid 将是用于将项目相互关联的关键,因为它永远不会改变。因此,我假设如果我重写查询以在 DN 上使用 objectGuid,性能会更好。

  • 是否可以通过 objectGuid 查询包含用户/组的组?
  • 是否可以查询给定经理 (objectGuid) 的直接下属的 objectGuids。
  • objectGuid 查询是否优于其他属性,或者 DN、sAMAccountName 或其他关键属性之一是从性能角度来看最好使用的关键吗?
  • 大多数(全部?)LDAP实现的上述答案是否正确,或者它们是否特定于MS AD?

提前致谢,

JB

附言。与我的大多数问题一样,性能差异可能可以忽略不计;这更多是为了学术兴趣/满足我的好奇心。

4

1 回答 1

7

如果应用程序存储或缓存标识符或对存储在 Active Directory 域服务中的对象的引用,则对象 GUID是使用的最佳标识符,原因如下:

  • 即使重命名或移动对象,on object 的 objectGUID 属性也不会更改。
  • 使用对象 GUID 很容易绑定到对象。
  • 如果对象被重命名或移动,objectGUID 属性提供了一个标识符,可用于快速查找和识别对象,而不必编写具有所有属性条件的查询,以识别该对象。

另一方面,如果对象被重命名或移动,对象的专有名称会改变,因此专有名称不是可靠的对象标识符。
因此,这与性能无关,而是与可靠性有关,您应该使用objectGUID搜索目录。

来到你的下一个问题:

是否可以通过 objectGuid 查询包含用户/组的组?

当然是的。检查此链接
希望能帮助到你 !!

于 2012-10-05T16:36:54.697 回答