Приложение, а не ASP.NET, использует приведенный ниже код для аутентификации в Windows.
Запустите приложение как обычный процесс, и оно не сможет пройти аутентификацию на локальном компьютере или в домене.«Неверный дескриптор» является исключением для локального компьютера.
Запустите его от имени администратора, и он отлично работает как для домена, так и для компьютера.Любая идея?
Он работал нормально для обоих, так что не исключено, что в настройках безопасности было изменение политики.
private bool VerifyWindowsPassword()
{
bool ret = false;
string username = this.usernameTextBox.Text;
string unsecure = ConvertToUNSecureString(this.Password);
try
{
var context = new PrincipalContext(ContextType.Domain);
try
{
ret = context.ValidateCredentials(username, unsecure);
if (ret)
{
return true;
}
}
catch
{
}
context = new PrincipalContext(ContextType.Machine);
ret = context.ValidateCredentials(username, unsecure);
if (ret)
{
return true;
}
if (!ret)
{
MessageBox.Show(
"Windows User/Password could not be authenticated.",
"Settings",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(
string.Format("Windows User/Password could not be authenticated. {0}", ex.Message),
"Settings",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
return ret;
}