1

我可以通过强制绑定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属性才会更新。

有人知道这是为什么吗?

4

0 回答 0