DirectoryEntry увеличивает количество неверных паролей на 2 - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь проверить пользователя AD, используя следующий код:

using (var de = new DirectoryEntry($"LDAP://{domainTxt.Text}", usernameTxt.Text, passwordTxt.Text))
{
    var nO = de.NativeObject; //verify credentials
}

При вызове de.NativeObject и неверном пароле количество попыток ввода неверного пароля увеличивается на 2 вместо 1.

Используя этот скрипт powershell для проверки количества:

C:\Users\administrator> Get-ADUser -Filter {userprincipalname -eq "x@y.z"} -Properties badPwdCount

Я обнаружил, что причина этого в том, что DirectoryEntry использует AuthenticationTypes.Secure по умолчанию, что достаточно справедливо, вот что яна самом деле нужно, если я заменю его на что-то еще, количество неверных паролей возрастет на единицу, как и ожидалось.

Кто-нибудь знает, как мне обойти эту проблему?

1 Ответ

1 голос
/ 07 октября 2019

Я не знаю точно, почему, но документация для AuthenticationTypes.Secure гласит:

Доменные службы Active Directory используют Kerberos и, возможно, NTLM для аутентификацииclient.

То, что может означать, что когда один из методов по какой-либо причине дает сбой, он пытается снова с другим. Вы можете увидеть это, наблюдая за сетевым трафиком с помощью чего-то вроде Wireshark.

Чтобы обойти это, можно использовать LdapConnection для проверки учетных данных (если это все, что вам нужно для подключения к LDAP для). Хороший пример тому есть в другом ответе здесь . Дополнительным преимуществом является сообщение о том, почему проверка не удалась.

...