我是 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/