如何以经过身份验证的方式运行应用程序

时间:2013-11-07 14:19:59

标签: c# .net database security active-directory

我创建了一个小应用程序,它尝试根据用户名和密码对用户进行身份验证。当在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。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望使用与当前进程'用户不同的用户执行ValidateCredentials

我可能会遗漏某些内容,但您是否尝试过以这种方式修改代码?

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

它只使用a constructor获取您用于访问域名的特殊帐户。