c#-无法使用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#-如何确定“ DirectoryEntry”是否找到我的用户?


下一篇:Spring LDAP示例需要持久性吗?