.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");
}
我在使用 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");
}