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 属性は設定されません。奇妙な機能の 1 つ (この質問のタイトルで指定したもの) は、2 回失敗した後、1 回ログインに成功するとlastLogon、ディレクトリの値が更新されることです。

ユーザーが 1 回ログインに失敗し、2 回目の試行で成功した場合、値は更新されません。lastLogon属性が更新されるのは、具体的には 2 回の失敗の後でのみです。

これがなぜなのか誰か知っていますか?

4

0 に答える 0