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 回の失敗の後でのみです。
これがなぜなのか誰か知っていますか?