我有以下代码片段来测试针对AD的纯文本用户名/密码,如果我在visual studio中点击F5并通过WCFTestClient尝试它,它可以正常工作,但是一旦我部署到IIS并尝试相同的功能,对于ValidCredentials,它永远不会返回true;是否需要为应用程序池运行的标识设置安全性?
我尝试将应用程序池标识设置为我自己的帐户(域管理员)只是为了测试这是否是问题,但这也无济于事,所以我对如何解决这个问题感到有点迷茫。 / p>
网站(自定义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
的适当权限的受限用户帐户,我可以完成此操作。
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,我终于通过https://stackoverflow.com/questions/5140377/query-activedirectory-sometimes-not-working-asp-net-c和https://elgg.leeds.ac.uk/webteam/weblog/15385.html
找到了自己的答案正如我所发现的,“网络服务”应用程序池标识是解决此问题的关键......
添加读取权限不起作用;所以还有其他问题。