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 中有一个很好的例子。它还有一个额外的好处,就是告诉您验证失败的原因。
我正在尝试使用以下代码验证 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 中有一个很好的例子。它还有一个额外的好处,就是告诉您验证失败的原因。