2011-08-26 22 views
0

我們使用LDAP來驗證用戶身份。 LDAP管道的另一端是一個非常大的Active Directory實現。我們發現驗證查詢花費的時間太長(15秒或更長)。在AD中驗證用戶的最佳性能通用LDAP查詢是什麼?

下面是我們正在做的事情表示:

ldap://ldap.myco.com/DN?dc=myco,dc=com??sub?(sAMAccountName=John) 

什麼是實現這一目標的方式,將任何巨型廣告實施做工精良的最佳方式?

謝謝!

+0

您可以將其他組件添加到基礎對象並將範圍縮小到「一個」? –

+0

我們沒有關於AD方面的邏輯結構的任何信息。在所有AD部署情況下,是否存在DN值,以便可以使用「one」範圍代替「sub」? – jeff7091

回答

3

sAMAccountName被定義爲索引,儘管您的搜索還包括計算機和組。你可以用(&(objectCategory=person)(objectClass=user)(samAccountName={0}))進一步限定它。

更大的問題是,你爲什麼要開始搜索?如果您只想通過LDAP綁定來檢查用戶名和密碼,請對LDAP進行綁定:// DC = myco,DC = com並訪問myDirectoryEntry.NativeObject。如果它拋出異常,你有問題。

另外,什麼是「ldap.myco.com」?這是一個負載平衡器嗎?它是你的域名嗎?你應該可以在這裏做一個無服務器綁定... ...

0

如果對sAMAccountName進行索引,則根據索引結構,此查詢應爲O(1)或O(log(N))。如果它需要15秒鐘,聽起來像O(N)這將意味着它沒有索引。

0

布賴恩德斯蒙德是他的答案(我已upvoted爲此)點亮。您將從簡單的綁定中獲得最佳性能。

爲了冗餘(並分散負載),您應該有多個DC可用於綁定。 Microsoft AD客戶端用於定位DC的算法(基於站點成員資格和SRV RR權重和首選項值)不是微不足道的,但您可以通過獲取幾個DC的地址(或名稱)來進行約束。

相關問題