我是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,则需要找到合适的构造函数并提供正确的参数才能使其正常工作.