我可以通过强制绑定DirectoryEntry
对象来验证用户,如下所示:
public bool ValidateUser(string username, string password)
{
using (var directoryEntry = new DirectoryEntry("LDAP:" + "//" + server +
"/" + containerDistinguishedName,
domain + @"\" + username, password,
AuthenticationTypes.Secure))
{
// invoke a bind to the directory entry
try
{
var obj = directoryEntry.NativeObject;
return true;
}
catch
{
return false;
}
}
}
这类似于我之前在这里执行此操作的方式:
然而,我无法让它工作,我最终开始反编译一些导致我写这个的其他代码。
使用此代码验证用户时,lastLogon
无论他们通过多少次成功验证,都不会设置 Active Directory 属性。一个奇怪的功能(我在这个问题的标题中指定)是两次失败的尝试,然后一次成功的登录将更新lastLogon
目录中的值。
如果用户一次登录失败,但第二次登录成功,则不会更新该值。只有在两次失败之后,他们的lastLogon
属性才会更新。
有人知道这是为什么吗?