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

时间:2020-05-11 17:31:22

标签: c# active-directory ldap

我对使用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有什么区别。

1 个答案:

答案 0 :(得分:1)

引荐意味着:“我无法回答您的问题,但我知道谁可以。当您连接到错误的位置时,这是服务器将您定向到正确的位置的一种方法。但这也是出乎意料的,这就是为什么它引发异常的原因。

我怀疑您的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,则只需指定端口。