LDAP搜索2个组织单位

时间:2012-03-22 10:26:46

标签: c# ldap

由于AD级别的一些变化,我必须在我的应用程序中更改AD中的查找。现在必须在2个不同的OU中执行搜索,而不是1。

此时我会进行第二次搜索,如果第一次没有返回任何内容。

是否可以将2个路径合并为1,因此必须只搜索一次?

THX。

using (var de = new DirectoryEntry())
{
    de.Path = "LDAP://OU=ou1,OU=Users,OU=BE,DC=dc,DC=sys";
    de.AuthenticationType = AuthenticationTypes.Secure;

    var deSearch = new DirectorySearcher
    {
        SearchRoot = de,
        Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))"
    };

    var result = deSearch.FindOne();

    if (result == null)
    {
        //User not found in ou1
        de.Path = "LDAP://OU=ou2,OU=Users,OU=BE,DC=dc,DC=sys";
        de.AuthenticationType = AuthenticationTypes.Secure;

        deSearch = new DirectorySearcher
        {
            SearchRoot = de,
            Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))"
        };

        result = deSearch.FindOne();

        if (result==null) return null;
    }

    using (var deUser = new DirectoryEntry(result.Path))
    {
        //Do something
    }
}

1 个答案:

答案 0 :(得分:1)

将基础对象更改为OU=Users,OU=BE,DC=dc,DC=sys,使用相同的过滤器,使用范围subone(取决于数据在组织单位下的位置)。有关搜索目录的详细信息,请参阅“LDAP: Using ldapsearch”和“LDAP: Programming Practices”。