连接到C#.NET中的Active Directory服务器的问题

时间:2010-02-02 16:50:45

标签: c# .net active-directory ldap

我目前正在用C#编写一些软件,需要连接到AD服务器并获取一些用户详细信息。当我使用下面的代码进行连接时,它可以对付我连接的大多数AD服务器,但有一些地方失败并出现“登录失败:未知用户名或密码错误”的错误。我正在使用的服务器名称/凭证肯定是正确的,因为我使用LDAP浏览器测试它们并且AD服务器使用标准安全性(端口389等)。有人可以提供任何建议吗?

干杯

DirectoryEntry d = new DirectoryEntry("LDAP://" + domain, admin_username, admin_password);

try
{
   object x = d.NativeObject;
}
catch
{
   throw;
}

2 个答案:

答案 0 :(得分:4)

过去,我在编程.net / AD时遇到过类似的问题。我发现有用的一件事是使用LDAP查看器来查看我是否可以连接到某些服务器等。这样,我至少可以确定它是否是.NET错误(可能是我的代码),凭据错误等。

我使用Softerra的LDAP查看器(http://www.ldapbrowser.com/download.htm)的free / lite版本,虽然我确信还有很多其他人可供选择。如果您尝试此处列出的那个,请确保下载“LDAP浏览器”而不是“LDAP管理员”。浏览器是免费的。

尝试使用LDAP浏览器/查看器连接到您在代码中遇到问题的同一LDAP路径。至少在第一步确定它是否是.NET /代码问题时。如果您无法通过浏览器进行连接,那么使用连接选项(如端口,域(FQDN)等)会很有帮助。

希望这可能有助于缩小范围。

答案 1 :(得分:1)

Active Directory至少允许三种不同的登录名称样式:

  1. LDAP - 即LDAP DN。例如:cn = JohnS,ou = Users,dc = example,dc = com
  2. NTLM。例如:EXAMPLE \ JohnS
  3. Kerberos主要名称:例如:johns@example.com
  4. 但是,无法使用 JohnS 进行登录,就像使用Windows框一样。这是一个非常常见的错误。