我想实现一个搜索ldap服务器的功能(姓名,电话号码等)
这是我写的(服务器地址是假的,但真正的一个有相同的模式)
DirectoryEntry de = new DirectoryEntry("LDAP://aet7ldap.phony.com")
DirectorySearcher ds = new DirectorySearcher(de);
var test = ds.FindAll();
我知道还有其他构造函数(字符串路径,字符串用户,字符串密码),但我不知道我的用户名或密码,而且我不确定是否需要。所以请帮我弄清楚如何在没有这些参数的情况下做到这一点(如果可能的话)。
我也尝试过编写过滤器,但那是另一回事,因为首先我需要正确连接。但是我可以假设我必须使用这些参数(或列名吗?)我一直在阅读(例如' gn'给定名称等等)?
答案 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
此致 托利山