使用LDAP/AD查找用户订阅的邮件列表
问题描述:
我目前正在研究获取用户订阅的邮件通讯组列表。我之前从未使用过Active Directory,并且在阅读这里和MSDN上的各种答案之后,我感到非常困惑。使用LDAP/AD查找用户订阅的邮件列表
我有我的查询设置是这样的:
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("LDAP://CN={0},OU=<value here>,DC=<value>...", userName);
search.SearchScope = SearchScope.Subtree;
search.PropertiesToLoad.Add("memberOf");
SearchResult result = search.FindOne();
if(result != null)
{
// Do stuff here
}
这里是我的问题:
- 是什么范围内的DirectorySearcher的SearchRoot财产吗?我是否需要设置这个查询来返回一个值?
- 我是否需要将SearchScope值设置为子树是我只列出1个OU作为基本OU,并让它搜索所有子OU?
- 是将字符串发送到PropertiesToLoad.Add()泛型还是需要由我的公司定义的字符串?
感谢您的建议!
答
(1)DirectorySearcher中的SearchRoot属性有什么作用?我是否需要设置这个查询来返回一个值?
它定义了搜索的起点;将其与文件系统进行比较 - 它定义了起始目录,您可以从中开始搜索。你会看到SearchRoot
里面,可能你会看着它的所有的儿童容器。它只是用来减少可能的容器数量来搜索的东西
(2)我是否需要将SearchScope值设置为子树是我只列出1 OU作为基本OU并让它搜索所有子OU中?
如果你要搜索OU或其他容器在你SearchRoot
- 然后是的,你必须搜索SearchScope.Subtree
- 否则搜索只会看你SearchRoot
容器本身(在像用户,计算机的所有对象,该容器内的组 - 但不是在子容器)。
(3)是将字符串发送到PropertiesToLoad.Add()泛型还是需要由我的公司定义的字符串?
这些是LDAP属性名称 - 它们可以是the standard ones以及贵公司可能定义和安装的可能的自定义扩展。 Here's a really nice list of all AD attributes as an Excel sheet(实际上有几个)。
我建议你下载http://directory.apache.org/studio/来日食和了解你的目录。如果你有时间。在学习如何正确查询AD/ldap时,大部分问题都会得到解答。 – Chris 2013-04-08 22:55:44