.NET Active Directory PrincipalContext 设置

.NET Active Directory PrincipalContext setup

我在使用 Active Directory 设置身份验证时遇到困难。

我在 ldap://server-1 有一个 LDAP 服务器,域是 "DC=company,DC=com"

this answer 之后,我尝试将方案设置为:

using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "ldap://server-1", "DC=company,DC=com"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}

但我一直收到错误 The server could not be contacted / The LDAP server is unavailable。我尝试了很多使用服务器名称和域的变体,但我对 LDAP 协议知之甚少,所以不知道我是否设置正确。

知道 LDAP 可用,因为我从命令行 dsquery DC=company,DC=com - 类型查询中获得结果。

我会试试这个 - 使用服务器名称和 dc= 字符串作为你的服务器名称 - 并离开 "starting point" (还有:确保使用 ALL LDAP:// 前缀上的大写 - 这是 至关重要的!):

using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://server-1/dc=company,dc=com"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}

行得通吗?

更新: 再次阅读我自己对你链接到的那个问题的回答,你需要提供这个:域名(只是一个字符串;可以是 NULL 以指示 "default" 域)到第二个参数,并且可选地 容器 DN 到第三个参数 - 所以试试这个:

using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, null, "dc=company,dc=com"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}