2016-11-18 59 views
0

因此,我的第一次使用ldap3的經驗並未按計劃進行。我無法從http://ldap3.readthedocs.io/abstraction.htmlPython ldap3閱讀器調用失敗

s = Server('server') 
c = Connection(s, user = 'username', password = 'password') 
query = 'Department: Accounting' # explained in next paragraph 
person_reader = Reader(c, person, 'o=test', query) 
person_reader.search() 

這看起來很簡單弄清楚爲什麼這是不工作...

代碼示例。但是,我的代碼,適用於服務器和連接調用,可以在Reader調用中發送大塊數據。下面的代碼片段:

query = 'department: Security Risk' 
person_reader = Reader(c, person, 'OU=All Businesses', query) 

和的fugly結果

AttributeError Traceback (most recent call last) 
in() 
1 query = 'department: Security Risk' 
----> 2 person_reader = Reader(c, person, 'OU=All Businesses', query) 

C:\Users########\AppData\Local\Continuum\Anaconda3\lib\site-packages\ldap3\abstract\reader.py in init(self, connection, object_def, query, base, components_in_and, sub_tree, get_operational_attributes, controls) 
79 self.base = base 
80 self._components_in_and = components_in_and 
---> 81 self.attributes = sorted([attr.name for attr in self._definition]) 
82 self.get_operational_attributes = get_operational_attributes 
83 self.controls = controls 

C:\Users##########\AppData\Local\Continuum\Anaconda3\lib\site-packages\ldap3\abstract\reader.py in (.0) 
79 self.base = base 
80 self._components_in_and = components_in_and 
---> 81 self.attributes = sorted([attr.name for attr in self._definition]) 
82 self.get_operational_attributes = get_operational_attributes 
83 self.controls = controls 

AttributeError: 'str' object has no attribute 'name' 

每暢達列表:

ldap3      1.0.4     py35_0` 

缺少什麼我在這裏?

+0

你是否調用'person_reader.search()'?你的代碼示例說不。 –

+0

僅供參考:我正在使用Anaconda Python版本3.5.2 – Harvey

+0

另外,什麼是'人'?它似乎是未定義的。 –

回答

0

的第二個參數的人()是:

definition: the ObjectDef used by the Reader instance.

裁判:http://ldap3.readthedocs.io/abstraction.html

你必須創建一個objectdef所傳遞的,這不是一個用戶ID。這是應該讀取的對象類型的定義。你可以使用它像:

person = ObjectDef(['person','user'], conn) 
r = Reader(conn, person, base, query) 

我沒有任何傳球的第三個參數作爲人任何東西,但一個完全合格的基礎DN經驗。因此,如果ou = test不是已註冊的baseDn,則可能無法在LDAP(AD)實例中使用。

0

因此,在將所有東西都扔在牆上並且沒有任何粘連之後,我會做每個沒有工具的開發人員 - 從頭開始​​,丟棄所有被告知的東西。而解決辦法是:

刪除該用戶認證和撥打電話匿名

是的,甚至以爲我已經通過安全箍跳得到訪問調用,沒有認證是使用它需要的。是的,我們會很開心,繼續前進。不要糾纏於此。