【问题标题】:Active Directory cross-domain searchActive Directory 跨域搜索
【发布时间】:2011-09-10 14:04:25
【问题描述】:

我有一个 Ative Directory 林,其中包含两个域 AA.RR.COM 和 BB.RR.COM,其中包含用户和组。 我需要在两个域中搜索用户,同时查询其中一个域,例如 AA.RT.COM 如何告诉 AD 对林中的所有邻居域运行我的 LDAP 查询?

这是我的代码:

using (var searcher = new DirectorySearcher(new DirectoryEntry(adServerName, adLogin, adPassword)))
{
    var filter = string.Format("(&(objectClass=person)(|(givenName=*{0}*)(displayName=*{0}*)(sn=*{0}*)(mail=*{0}*)))", valueToSearch);

    searcher.ReferralChasing = ReferralChasingOption.All;

    searcher.PropertiesToLoad.AddRange(new[] { 
        "samaccountName", 
        "memberOf", 
        "displayname", 
        "mail" });

    searcher.Sort = new SortOption("samaccountname", SortDirection.Ascending);
}

当所有用户都在同一个域中时,这可以正常工作,但当他们分布在同一个林中的多个域中时,则不行。

任何帮助都是可观的。

【问题讨论】:

    标签: active-directory ldap cross-domain


    【解决方案1】:

    由于您说 AA.RR.COM 和 BB.RR.COM 在同一个 Active Directory 林中,您可以检查全局目录是否在您的林中运行。如果您正在运行全局编录,则可以对全局编录运行 LDAP 查询。下面是假设 AA.RR.COM 中有全局目录的示例代码。

    using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("GC://AA.RR.COM")))
    {
        var filter = string.Format("(&(objectClass=person)(|(givenName=*{0}*)(displayName=*{0}*)(sn=*{0}*)(mail=*{0}*)))", valueToSearch);
    
        searcher.ReferralChasing = ReferralChasingOption.All;
    
        searcher.PropertiesToLoad.AddRange(new[] { "samaccountName", "memberOf", "displayname", "mail" });
        searcher.Sort = new SortOption("samaccountname", SortDirection.Ascending);
        foreach (SearchResult result in searcher.FindAll())
        {
            Console.WriteLine(result.Path);
        }
    }
    

    【讨论】:

      【解决方案2】:

      所以,有几件事:

      • 您需要针对全局编录。您可以在 Harvey 的说明中查看示例绑定。
      • 您需要将(objectClass=person) 替换为(objectCategory=person)(objectClass=user)
      • 您的搜索过滤器效率极低。默认情况下,您列出的所有属性都没有以半有效方式进行中间搜索所需的索引类型。至少,您至少应该替换
      • 根据您正在执行的操作,您应该查看 ANR 搜索是否是您真正想要的 - http://msdn.microsoft.com/en-us/library/cc223243(PROT.13).aspx
      • 执行服务器端排序可能会很昂贵,并且可能会因结果集较大而失败。您可能希望在本地执行此操作
      • 您应该为您的搜索器添加一个 PageSize

      【讨论】:

        猜你喜欢
        • 2012-12-07
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多