【发布时间】:2011-11-15 09:19:34
【问题描述】:
我有以下代码 sn-p 来针对 AD 测试纯文本用户名/密码,如果我在 Visual Studio 中按 F5 并通过 WCFTestClient 尝试它,它工作正常,但是一旦我部署到 IIS 并尝试同样的函数,它永远不会为 ValidCredentials 返回 true;是否需要为运行应用程序池的身份设置一些安全方面的信息?
我尝试将应用程序池身份设置为我自己的帐户(域管理员)只是为了测试这是否是问题所在,但这也没有帮助,所以我对如何解决这个问题有点迷茫。
网站(自定义 API)已设置匿名访问。
try
{
// create a "principal context" - e.g. your domain (could be machine, too)
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, DomainName))
{
// validate the credentials
if (pc.ValidateCredentials(UserName, Password))
{
IsValid = true;
break;
}
}
}
catch (Exception)
{
LoggingControler.LogWarning(null, "Unreachable Domain: " + Domain);
}
我又重温了一遍,这一切都归功于 Windows 中的权限。网络服务不知何故没有足够的权限来执行PrincipalContext.ValidateCredentials。如果我将应用程序池身份更改为域管理员的身份,代码就可以工作。
如果有人能告诉我如何设置一个具有适当权限的受限用户帐户来执行PrincipalContext.ValidateCredentials,我可以完成这个。
【问题讨论】:
标签: c# iis active-directory