连接到LDAP服务器

时间:2014-06-17 15:18:25

标签: c# ldap directoryentry

我想实现一个搜索ldap服务器的功能(姓名,电话号码等)

这是我写的(服务器地址是假的,但真正的一个有相同的模式)

DirectoryEntry de = new DirectoryEntry("LDAP://aet7ldap.phony.com")                 
DirectorySearcher ds = new DirectorySearcher(de);
var test = ds.FindAll();

我知道还有其他构造函数(字符串路径,字符串用户,字符串密码),但我不知道我的用户名或密码,而且我不确定是否需要。所以请帮我弄清楚如何在没有这些参数的情况下做到这一点(如果可能的话)。

我也尝试过编写过滤器,但那是另一回事,因为首先我需要正确连接。但是我可以假设我必须使用这些参数(或列名吗?)我一直在阅读(例如' gn'给定名称等等)?

1 个答案:

答案 0 :(得分:0)

听起来像是您尝试使用目录条目方法连接到Active Directory来查找用户,如果您正在为您正在寻找的用户做任何事情,您还没有提到一旦他们找到了,我就会给你代码,为你找到用户。

using(DirectoryEntry de = new DirectoryEntry("LDAP://servername/DC=phony,DC=com"))
using(DirectorySearcher ds = new DirectorySearcher(de))
{
    ds.Filter="(&(objectClass=user)(sAMAccountName="username"))";
    //I don't know exactly what criteria you're using to find the user
    ds.Filter="(&(objectClass=user)(distinguishedname="")(givenname=""))"
    ds.SearchScope = SearchScope.Subtree;

    //performing the search and assigning the result to result
    SearchResult result = ds.FindOne();
    if (result != null)
    {
        using(DirectoryEntry user = result.GetDirectoryEntry())
        {
            //put code here to deal with the user as you see fit.
        }
        lblOutput.Text = "User " + userName + " was found.";
    }
}

过滤器是找到您正在寻找的用户最重要的部分,&表示and所以在我上面的代码中给出的第一个示例中,您是'使用类用户AND查找用户名username的对象。它很容易搞清楚。这是指向所有Active Directory属性列表的链接,您应该能够找到您在那里寻找的内容。 http://www.selfadsi.org/user-attributes.htm

此致 托利山