2

我创建了一个小型应用程序,它尝试根据用户名和密码对用户进行身份验证。此应用程序在 Active Directory 所在的同一域上运行时可以正常工作。

我现在必须扩展应用程序,使其也可以在安全和权限方面“关闭”的域上工作。换句话说,有没有办法基于管理员帐户或具有访问 Active Directory 所需权限的帐户来运行应用程序?

这是我用来验证用户的代码:

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, server + ":" + port))
{
       if (pc.ValidateCredentials(username, password))
       {
              valid = true;
       }
       else 
       {
              valid = false;
       }
}

上面的代码可以完美运行,但是我想对其进行修改,以便它可以以经过身份验证的方式与 Active Directory 数据库进行通信。

我已经阅读了许多文档和资源,但没有找到任何东西。我发现的关闭是一篇文章,提到必须以特定方式设置和配置 IIS。但是,我的应用程序是一个简单的 C# 应用程序,并且没有使用 IIS。

4

1 回答 1

0

如果我正确理解了这个问题,您希望ValidateCredentials使用与当前进程用户不同的用户来执行。

我可能遗漏了一些东西,但是您是否尝试过以这种方式修改代码?

using (PrincipalContext pc = 
        new PrincipalContext(ContextType.Domain, 
                             server + ":" + port, 
                             specialAccountUsername, 
                             specialAccountPassword))
{
       return pc.ValidateCredentials(username, password);
}

它只是使用一个构造函数,该构造函数采用您用于访问域的特殊帐户。

于 2014-09-19T17:39:11.267 回答