我正在编写一些代码以与Active Directory一起使用。此代码包含一些功能,这些功能可以拉回给定用户帐户名称的用户,然后获取直接报告并获取组成员身份(这些可以递归或非递归地运行,具体取决于是否需要完整的层次结构)。
我已经看到了一些有关如何完成此操作的答案。但是,所有答案似乎都取决于专有名称。
专有名称是用于在活动目录中关联这些对象的外键(按数据库术语)吗?我的直觉表明,objectGuid将是用于将项目彼此关联的键,因为它永远不会改变。结果,如果我重新编写查询以在DN上使用objectGuid,我会认为性能会更好。
是否可以通过objectGuid查询包含用户/组的组?
是否可以查询给定管理器(objectGuid)的直接报告的objectGuids。
objectGuid查询是否胜过其他属性?或者从性能角度来看,DN,sAMAccountName或其他键属性之一是最佳使用的键吗?
以上答案对大多数(所有)LDAP实现都是正确的,还是特定于MS AD?
提前致谢,
JB
ps。与我的大多数问题一样,性能差异可能微不足道;这更多是出于学术兴趣/满足我的好奇心。
最佳答案
如果应用程序存储或缓存标识符或对Active Directory域服务中存储的对象的引用,则出于以下几个原因,对象GUID是最佳的标识符:
on对象的objectGUID属性永远不会更改,即使该对象
被重命名或移动。
使用对象GUID轻松绑定到对象。
如果对象被重命名或移动,则objectGUID属性将提供一个
单个标识符,可用于快速查找和识别
对象,而不必组成一个具有条件的查询
可以识别该对象的所有属性。
另一方面,如果重命名或移动对象,则对象的专有名称会更改,因此专有名称不是可靠的对象标识符。
因此,与性能无关,而与可靠性有关,您应该使用objectGUID搜索目录。
谈到您的下一个问题:
是否可以通过以下方式查询包含用户/组的组
objectGuid?
当然可以。选中此link。
希望能帮助到你 !!
关于c# - C#中的Active Directory查询性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12749881/