Проверка подлинности Windows не проходит без участия администратора - PullRequest
0 голосов
/ 12 февраля 2019

Приложение, а не 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;
}
...