我创建了一个小应用程序,它尝试根据用户名和密码对用户进行身份验证。当在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。
答案 0 :(得分:0)
如果我理解正确,您希望使用与当前进程'用户不同的用户执行ValidateCredentials
。
我可能会遗漏某些内容,但您是否尝试过以这种方式修改代码?
using (PrincipalContext pc =
new PrincipalContext(ContextType.Domain,
server + ":" + port,
specialAccountUsername,
specialAccountPassword))
{
return pc.ValidateCredentials(username, password);
}
它只使用a constructor获取您用于访问域名的特殊帐户。