2010-07-06 81 views
1

我有一個網站,要求用戶輸入其公司網絡用戶名和密碼。然後,它在Active Directory中查找該帳戶,並獲取與該帳戶關聯的任何電子郵件地址的列表。第一次嘗試鎖定Active Directory帳戶

我遇到的問題是一個不正確的密碼鎖定了一個帳戶。我們的域名政策是,一個帳戶在三次不正確的輸入後會被鎖定,所以我假設我在我的代碼中做了錯誤的事情。我對Active Directory或.NET DirectoryServices一般不太瞭解,這可能會從我的代碼中看出來。那就是:

public ArrayList AuthenticateActiveDirectory(string Domain, string UserName, string Password) 
{ 
    // An error occurs if the username/password combo does not exist. 
    // That is how we know it is not a valid entry. 
    try 
    { 
     DirectoryEntry entry = new DirectoryEntry("LDAP://" + Domain, UserName, Password); 
     object nativeObject = entry.NativeObject; 
     ArrayList emails = new ArrayList(); 
     DirectorySearcher ds = new DirectorySearcher(entry); 
     ds.Filter = "samaccountname=" + UserName; 
     ds.PropertiesToLoad.Add("mail"); 
     SearchResult sr = ds.FindOne(); 
     if (sr.Properties["mail"] != null) 
     { 
      for (int email = 0; email < sr.Properties["mail"].Count; email++) 
      { 
       emails.Add(sr.Properties["mail"][email]); 
      } 
     } 
     return emails; 
    } 
    catch (DirectoryServicesCOMException) { throw; } 
    catch (Exception) { throw; } 
} 
+0

與您的問題沒有關係,但世界上是什麼點'catch(Exception){throw; }'? – 2010-07-06 12:45:28

+0

什麼都沒有:)如果我認爲我可能需要在那裏做額外的處理,我有時會這樣做。我也在調試時使用它,並且作爲一個額外的提醒,這些異常可能發生在這裏。 – MJB 2010-07-06 12:50:26

回答

0

我做了一些搜索,發現了一些代碼(感謝Ayende Rahien的解決方案)使用,只需進行身份驗證和不搜索電子郵件或其他任何東西。我在其他函數之前使用它,它似乎工作正常。我猜測我的其他代碼不止一次 - 至少3次 - 這導致了鎖定。這裏是我現在使用的代碼來進行身份驗證:

private bool Authenticate(string domain, string user, string password) 
{ 
    try 
    { 
     using (DirectoryEntry de = new DirectoryEntry("LDAP://" + domain, 
               user, password)) 
     { 
      return de.NativeObject != null; 
     } 
    } 
    catch 
    { 
     return false; 
    } 
} 
+1

作爲一個側面說明,密碼重試的一般經驗法則是將其撞到10左右。這是因爲各種Windows組件在最終發出「訪問被拒絕」消息之前都會默默地重試幾次。這也不是真正的安全降級,因爲它幾乎不可能在10次嘗試中猜出密碼,因爲它是3.另外,如此小的限制可導致非常成功的DOS攻擊,其中攻擊者只是試圖阻止其他人登錄在。 – NotMe 2010-07-06 14:48:19

+0

謝謝,但那不是我的電話。我不認爲我們的網絡管理員會同意這一點。關於DOS攻擊:本網站僅限內部使用。 – MJB 2010-07-06 19:12:59

相關問題