【问题标题】:Search Entire Active Directory Forest by username按用户名搜索整个 Active Directory 林
【发布时间】:2020-11-20 07:29:50
【问题描述】:

我的组织拥有由多个域名组成的 Active Directory Forestry。我需要编写一个应用程序来通过用户 ID 查找用户。

        string username = "test_user_id";

        DirectoryEntry entry = new DirectoryEntry("LDAP://one_of_the_domain");
        DirectorySearcher dSearch = new DirectorySearcher(entry);
        dSearch.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "))";
        SearchResult result = dSearch.FindOne();

        if (result != null)
        {
            var email = result.Properties["mail"];
            Console.WriteLine(email[0]);
        }

上面的示例代码将允许我在one_of_the_domain 内搜索用户。但是有没有办法在整个活动目录林中找到用户?

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:

    使用Forest 类获取当前全局编录,然后您可以在其中获取对将搜索整个森林的DirectorySearcher 的引用。

        var currentForest = Forest.GetCurrentForest();
        var gc = currentForest.FindGlobalCatalog();
    
        using (var userSearcher = gc.GetDirectorySearcher())
        {
          userSearcher.Filter = 
    "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "))";
                SearchResult result = userSearcher.FindOne();
    
        }
    

    【讨论】:

    • 仍然只在当前域中搜索。
    • 我是否需要对环境进行任何更改。我如何确保两个域都在同一个林中。我已经启用了这些域之间的信任。
    • 使用 .FindAllGlobalCatalogs。 .FindGlobalCatalog 只返回一个。还有.FindAllDiscoverableGlobalCatalogs。我不知道有什么区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多