首页 文章

.NET Active Directory PrincipalContext设置

提问于
浏览
1

我在使用活动目录设置身份验证时遇到了困难 .

我在 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可用,因为我从cmd行 dsquery DC=company,DC=com 获得结果 - 类型查询 .

1 回答

  • 2

    我会尝试这个 - 使用服务器名称和 dc= 字符串作为您的服务器名称 - 并保留"starting point"(同时:确保在 LDAP:// 前缀上使用 ALL UPPERCASE - 这是 crucial !):

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

    那样有用吗?

    Update: 阅读我自己对你再次链接的问题的答案,你需要提供这个:一个 domain name (只是一个字符串;可以 NULL 表示"default"域)到第二个参数,并且可选地 container DN 到第三个参数 - 所以试试这个:

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

相关问题