使用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 
} 

这里是我的问题:

  1. 是什么范围内的DirectorySearcher的SearchRoot财产吗?我是否需要设置这个查询来返回一个值?
  2. 我是否需要将SearchScope值设置为子树是我只列出1个OU作为基本OU,并让它搜索所有子OU?
  3. 是将字符串发送到PropertiesToLoad.Add()泛型还是需要由我的公司定义的字符串?

感谢您的建议!

+1

我建议你下载http://directory.apache.org/studio/来日食和了解你的目录。如果你有时间。在学习如何正确查询AD/ldap时,大部分问题都会得到解答。 – Chris 2013-04-08 22:55:44

(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(实际上有几个)。