0

我在编写可以执行 LDAP 身份验证的模块时遇到困难。

当我在浏览器中输入以下行并按 Enter 键时,Windows 联系人应用程序将向我显示来自服务器的记录,因此我知道这是连接到的正确位置:

ldap://directory.abc.edu/uid=asmith,ou=People,o=abc.edu

但是当我想在代码中使用相同的东西时,我收到“无效的 dn 语法”错误消息。

这是我的代码:

public void LDAPResult()
        {           
            using (DirectoryEntry root = new DirectoryEntry(string.Format(@"LDAP://directory.abc.edu/uid=asmith,ou=People,o=abc.edu")))
            {
                using (DirectorySearcher searcher = new DirectorySearcher(root))
                {
                    //This following line give me the error
                    **SearchResultCollection results = searcher.FindAll();**

//The rest is not actually important, I never get there to see if it works properly.
                    StringBuilder summary = new StringBuilder();
                    foreach (SearchResult result in results)
                    {
                        foreach (string propName in result.Properties.PropertyNames)
                        {
                            foreach (string s in result.Properties[propName])
                            {
                                summary.Append(" " + propName + ": " + s + "\r\n");
                            }
                        }
                        summary.Append("\r\n");
                    }
                    Console.WriteLine(summary);
                }
            }            
        }

对此的任何帮助都非常感谢。谢谢,

4

2 回答 2

1

我不确定您要连接到哪个 LDAP 目录,但您的 DN 看起来不太正确。

尤其是“o=abc.edu”部分。在 Active Directory(我最熟悉的目录)中,DN 最终会变成 uid=asmith,ou=People,dc=abc,dc=edu。请注意,abc 和 edu 是明显不同的部分。由于您使用的是 O 而不是 DC,我猜该目录不是 AD,但域名的部分可能仍使用两个 o 表示。o=abc,o=edu 也许?

于 2012-09-21T19:35:44.927 回答
0

你应该看看这里

使用 DirectoryServices 从 C# 连接到 LDAP

和这里

.Net 中的 LDAP 目录条目 - 不适用于 OU=Users

特别是对于“new DirectoryEntry(...)”的用法:)

于 2012-09-21T19:22:33.167 回答