非AD LDAP可以使用

时间:2011-03-21 21:51:43

标签: c# .net ldap

我们的机构有一个大型LDAP系统,我们可以通过端口636上的LDAPS访问。我正在尝试为此LDAP创建一个IQueryable接口,该接口映射到现有的People实体但遇到了麻烦。

我提到了上面的内容所以人们知道我的最终目标,但是如果有人可以帮助我简单地对这个非AD LDAP运行成功的查询,即使它在IQueryable领域之外,我今天也会感到满意。这是我到目前为止(我已经编辑了密码,uid和ou的安全性):

var url = @"ldaps://ldap.ucdavis.edu:636/uid=s1,ou=s2,dc=ucdavis,dc=edu";
        var password = @"something";

        DirectoryEntry entry = new DirectoryEntry(url);
        entry.Password = password;
        entry.AuthenticationType = AuthenticationTypes.Secure;

        DirectorySearcher mySearcher = new DirectorySearcher(entry);

        SearchResultCollection results;

        results = mySearcher.FindAll();

        foreach(SearchResult resEnt in results) {
            ResultPropertyCollection propcoll = resEnt.Properties;

            foreach (string key in propcoll.PropertyNames)
            {
                foreach (object values in propcoll[key])
                {
                    switch (key)
                    {
                        case "sn":
                            //sb.Append(key.ToString() + "<surname>"
                            //+ values.ToString() + "</surname>");
                            break;
                        case "cn":
                            //sb.Append(key.ToString() + "<cn>"
                            //+ values.ToString() + "</cn>");
                            break;
                        case "name":
                            //sb.Append(key.ToString() + "<name>"
                            //+ values.ToString() + "</name>");
                            break;
                    }
                }
            }
        }

但我在mySearcher.FindAll()行上不断收到“未知错误”。有人在这看到一个明显的问题吗?我是否正确指定了ou和uid?

2 个答案:

答案 0 :(得分:2)

&gt;在这里看到一个明显的问题?

搜索查询本身在哪里?

DirectorySearcher(entry);

根据您的基本路径初始化搜索者。

尝试将“filter”属性设置为有效的LDAP搜索字符串,例如“(objectClass = inetOrgPerson)”。

另外,尝试将SearchScope设置为OneLevel。

无论如何,我认为这不会有所帮助。

AFAIK DirectorySearcher仅仅是ADSI的包装器。您应该使用的是System.DirectoryServices.Protocols命名空间中的类,请参阅此文章:http://msdn.microsoft.com/en-us/library/bb332056.aspx

答案 1 :(得分:0)

我想知道LDAP DN是否正确? AD使用dc = acme,dc = com,但其他LDAP服务器可能使用ou = ucdavis,o = edu。