我是LDAP新手,希望使用.Net连接到LDAP服务器以验证用户凭据。以下代码返回错误:
LDAP服务器不可用
但是验证在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");
}
答案 0 :(得分:3)
首先 - PrincipalContext
仅适用于 Active Directory ,而不是针对任何其他LDAP服务器。
其次:您为构造函数指定了无效参数。关于PrincipalContext
可用的构造函数的Check out the MSDN docs。
您只能定义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。