我有以下代码片段针对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/

10-13 09:32
查看更多