c# - 无法使用 LDAP 验证凭据

标签 c# .net ldap

我是 LDAP 的新手,想使用 .Net 连接到 LDAP 服务器以验证用户凭据。以下代码返回错误:

The LDAP server is unavailable

但验证在 Java 代码中工作正常。请让我知道我哪里出错了。

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://192.168.65.201:389/DC=be,DC=ndl,DC=CompanyName,DC=com"))
{
    bool a= pc.ValidateCredentials("myname@CompanyName.com","password"); 
}

最佳答案

首先 - PrincipalContext 仅适用于 Active Directory,不适用于任何其他 LDAP 服务器。

其次:您为构造函数指定了无效参数。 Check out the MSDN docs关于 PrincipalContext 可用的构造函数。

您可以只定义一个 ContextType 参数,在这种情况下,PrincipalContext 是针对您连接到的当前域构建的:

var ctx = new PrincipalContext(ContextType.Domain);

或者您可以使用带有第二个字符串参数的构造函数,它表示您域的域名(域名 - 不是一个完整的 LDAP 路径!):

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com");

然后您将在根级别连接到该特定域。

或者第三,您可以指定第三个参数来定义要连接到的域中的容器:

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com", 
                               "CN=Users,DC=be,DC=ndl,DC=CompanyName,DC=com");

因此您需要找到合适的构造函数并提供正确的参数才能使其正常工作 - 如果您使用的是 Active Directory。

关于c# - 无法使用 LDAP 验证凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23623224/

相关文章:

.net - C# : How to structure async/await code where many requests are made for the same, 返回数据慢,这都满足了

c# - 数学库中 Math.tanh 的倒数在哪里?

c# - WP 以编程方式移动 ScrollViewer

c# - 使用 C# 的 Windows Phone 7 上的 NSUserDefaults 等价物是什么?

java - 使用java进行LDAP AD分页

linux - 搜索票务系统、建议

c++ - 如何使用 C++ 在 Active Directory 的属性中设置值?

c# - 更改 Visual Studio 的默认 Azure 订阅

c# - ASP.NET-5 测试库不发现主代码

c# - 生成的 Entity Framework 代码