我有以下代码片段针对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
的适当权限的受限用户帐户,则可以完成此操作。 最佳答案
是否启用Windows Authentication in IIS
关于c# - 在cassini中IIS部署正常后,PrincipalContext.ValidateCredentials停止验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8134008/