2009-06-18 69 views
1

我使用下面的C#代碼來連接到Active Directory和驗證的登錄,Active Directory的不正確的密碼嘗試重複計算

DirectoryEntry de = new DirectoryEntry(); 
    string username = "myuser", path = "LDAP://addev2.dev.mycompany.com/CN=myuser,DC=dev,DC=mycompany,DC=com", password = "test"; 
    for (int i = 0; i < 4;i++) 
    { 

     try 
     { 

      de.AuthenticationType = AuthenticationTypes.Sealing | AuthenticationTypes.Secure | AuthenticationTypes.FastBind; 
      de.Username = username; 
      de.Password = password; 

      de.Path = path; 

     //de.RefreshCache(); 
      Object obj = de.NativeObject; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 

當密碼正確能正常工作。但是,如果密碼不正確,則在AD中顯示爲2次無效嘗試。 因此,當AD管理員允許5次無效嘗試時,用戶在第3次嘗試時被鎖定時會發生什麼情況。 當我在AD的事件日誌1看到2條目。

1)預驗證失敗:

2)登錄嘗試:

MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 
    Logon account: [email protected] 
    Source Workstation: WKSXXXX 
    Error Code: 0xC000006A 

步進救援人員到場代碼我看到的第2行的事件條目

de.RefreshCache() 

我嘗試使用de.NativeObject看看這是否能解決問題。沒有骰子

任何人有任何指針?

+0

什麼是循環? – Hugoware 2009-06-18 15:21:02

回答

0

終於在使用格式username @ domain時找到了這個令人困惑的問題的答案一旦使用Kerebros,IIS應用程序使用2次調用,並且當使用NTLM導致雙重計數時失敗修復方法是對身份驗證域使用以下格式\用戶名,並解決了這個問題。 http://support.microsoft.com/kb/264678/EN-US/

0

您可能會檢出System.DirectoryServices.AccountManagement命名空間。您可以訪問一個帳戶,然後將其中一個方法轉換爲DirectoryEntry對象。它可能會解決您的雙重身份驗證問題,並且更易於使用。

相關問題