与 C# 桌面应用程序的 LDAP 连接

LDAP connection with C# desktop application

我对使用 Active Directory 和 LDAP 还很陌生,已经阅读了一些文章并尝试与 LDAP 建立连接..

我有 LDAP URL 和基本 DN(基本专有名称)URL..我能够与 LDAP URL 建立连接,但是当我尝试建立连接时与基本 DN 的连接 URL 我遇到以下错误..

已从服务器返回推荐

string username = “ldapuser”;
string password = “prime812”;
DirectoryEntry de = new DirectoryEntry(“LDAP://AM-LDAP-SN.ams.com/CN=Users,DC=ms,DC=ds,DC=AMS,dc=com:389”, username,password);
DirectorySearcher deSearch = new DirectorySearcher();
deSearch.SearchRoot = de;
SearchResult res = deSearch.FindOne();

当我查询下面的 LDAP URL 而不是基本 DN URL 它工作正常..

LDAP://AM-LDAP-SN.ams.com:389

还想知道 URL、LDAP url 和基本 DN url..

之间的区别

推荐意味着:"I can't answer your question, but I know who can."当您连接到错误的地方时,这是服务器将您引导到正确的地方的一种方式。但这也是意想不到的事情,这就是它抛出异常的原因。

我怀疑您的 LDAP 路径有误。 LDAP 路径应该这样构造:

LDAP://server/distinguishedName

服务器和专有名称 (DN) 都是可选的,但您至少需要一个。如果仅指定服务器,则使用该服务器的默认 DN(域的根)。这就是您使用 LDAP://AM-LDAP-SN.ams.com:389 时发生的情况。如果仅指定了 DN,则您的计算机必须知道要为该 DN 与哪个服务器通信。只有当您的计算机加入该域或受信任的域时才会发生这种情况。

如果指定端口,那应该是服务器信息的一部分,而不是 DN。我认为这就是你的错误所在。您的代码应如下所示:

DirectoryEntry de = new DirectoryEntry("LDAP://AM-LDAP-SN.ams.com:389/CN=Users,DC=ms,DC=ds,DC=AMS,dc=com", username,password);

请注意 :389 在域名之后,而不是 DN。

我自己对此进行了测试(将端口号放在 DN 之后),我也得到了一个引用异常。您可能会注意到异常对象的 ExtendedErrorMessage 显示它指向 AM-LDAP-SN.ams.com:389.

但 389 是默认端口,因此您可以将其完全删除。如果不是389,你只需要指定端口。