DirectoryEntry 将错误密码计数增加 2

DirectoryEntry increase bad password count by 2

我正在尝试使用以下代码验证 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,这很公平,这就是我真正需要的,如果我把它改成别的,不好密码计数按预期增加一。

有谁知道我该如何解决这个问题?

我不确定为什么,但是 AuthenticationTypes.Secure 的文档说:

Active Directory Domain Services uses Kerberos, and possibly NTLM, to authenticate the client.

可能 意味着当一种方法由于某种原因失败时,它会再次尝试使用另一种方法。您可以通过使用 Wireshark 之类的工具监控网络流量来看到这一点。

解决此问题的一种方法可能是使用 LdapConnection 来验证凭据(如果这就是您需要连接到 LDAP 的全部)。在另一个答案 here 中有一个很好的例子。它还有一个额外的好处,就是告诉您验证失败的原因。