Microsoft Exchange:如何通过EWS获取AD域?

时间:2014-12-01 07:52:55

标签: c# active-directory exchangewebservices

我收到了一个Exchange电子邮件地址,我必须使用该电子邮件地址获取用户的AD条目。

只要我只有一个GC,使用DirectoryEntry就可以正常工作:

DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("GC:"));
searcher.Filter = string.Format("{0}={1}","mail","alexander@contoso.com");
DirectoryEntry entry = searcher.FindOne().GetDirectoryEntry();

但是,如果我有多个受信任的GC,并且查询AD的用户与查询的用户位于不同的GC中,则该对象无法在全局目录中找到,因为我没有提供要搜索的AD域。

所以要么我查询所有GC(我可以在GC中找到所有可信的GC吗?),或者我使用EWS获取DirectoryEntry。

这两种可能性中的哪一种可行?

1 个答案:

答案 0 :(得分:1)

我不太明白你的意思:

  

但是如果我有多个可信任的GC,那么用户正在查询AD   在与查询的用户不同的GC中,无法找到该对象   在全局编录中,因为我没有提供AD域   搜索。

GC只包含自己林中的对象 通过在forest2中查询GC,找不到位于forest1中的用户。

指定要使用的GC

DirectorySearcher searcher = new DirectorySearcher(
    new DirectoryEntry("GC://forest1.net/"));

如果当前用户没有权限从该林中读取,您可能需要提供其他用户的凭据:

DirectorySearcher searcher = new DirectorySearcher(
    new DirectoryEntry("GC://forest1.net/", "user", "password"));