У меня есть следующий фрагмент кода, чтобы проверить имя пользователя и пароль в виде простого текста в AD, что прекрасно работает, если я нажму F5 в Visual Studio и попробую его через WCFTestClient, но как только я развернусь в IIS и попробую ту же функцию никогда не вернет true для ValidCredentials; Есть ли что-то разумное в отношении безопасности, которое необходимо установить для идентификатора, под которым работает пул приложений?
Я попытался установить удостоверение пула приложений для своей учетной записи (администратора домена), просто чтобы проверить, была ли это проблема, но это тоже не помогло, поэтому я немного растерялся, как это исправить.
На сайте (Custom 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
, я могу закончить это.