我想知道如何在C#中設置Active Directory(AD)中的登錄計數。目前,我有一個庫,它根據用戶名和密碼檢查特定用戶是否在AD中,但是當我在AD Explorer中查看該用戶時,我沒有看到登錄計數數字變得越來越大(從1到2等等)。使用C#登錄到Active Directory
我假設我需要從C#訪問'登錄'方法來執行此操作,但是我沒有在任何DirectoryServices(以及AccountManagement)方法中看到類似這樣的方法。
有什麼建議嗎?
謝謝 添
我想知道如何在C#中設置Active Directory(AD)中的登錄計數。目前,我有一個庫,它根據用戶名和密碼檢查特定用戶是否在AD中,但是當我在AD Explorer中查看該用戶時,我沒有看到登錄計數數字變得越來越大(從1到2等等)。使用C#登錄到Active Directory
我假設我需要從C#訪問'登錄'方法來執行此操作,但是我沒有在任何DirectoryServices(以及AccountManagement)方法中看到類似這樣的方法。
有什麼建議嗎?
謝謝 添
你檢查所有的域控制器?根據該屬性的documentation:
此屬性不會被複制並在域中的每個域控制器上進行維護。要獲得用戶在域中成功登錄嘗試的總次數的準確值,必須查詢域中的每個域控制器,並且應該使用這些值的總和。請記住,該屬性未被複制,因此退役的域控制器可能也會爲用戶計入登錄名,並且這些將從計數中缺失。
編輯:我想這取決於你如何測試用戶名和密碼。在我的一個應用程序中,我以類似於此的方式檢查U/P。
NetworkCredential credentials = new NetworkCredential(userName, password, domain);
LdapDirectoryIdentifier id = new LdapDirectoryIdentifier(domain);
using (LdapConnection connection = new LdapConnection(id, credentials, AuthType.Kerberos))
{
connection.SessionOptions.Sealing = true;
connection.SessionOptions.Signing = true;
try
{
connection.Bind();
}
catch (LdapException lEx)
{
if (ERROR_LOGON_FAILURE == lEx.ErrorCode)
{
return false;
}
throw;
}
}
return true;
經過多次嘗試似乎沒有增加DC上的登錄計數器,我打了。
然而,當我用這個方法
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
bool authenticated;
authenticated = pc.ValidateCredentials(userName, password);
if (authenticated)
{
return true;
}
else
{
return false;
}
}
它沒有增加它。至少在幾次嘗試之後。我們在這裏有一些區議會,我不知道如何針對特定的區議會。
嗯,是的,但我沒有回答我的問題。我的問題是我可以通過Active Directory進行身份驗證,但Active Directory未記錄我已通過身份驗證的事實(即 - 登錄計數未遞增,並且最後登錄時間戳未在用戶身份驗證時設置爲)。這是我遇到的問題。謝謝,蒂姆 – Rushman
請參閱我編輯的答案。 – Tofystedeth