2009-11-18 52 views
0

我想用python-ldap使用特定的baseDN連接到ldap服務器。如何通過python連接到LDAP時指定baseDN?

import ldap 

baseDN="ou=unit,o=org.c=xx" # doesn't work 
#baseDN="" # works 
host="ldaps://test.org.xx:636" 
userDN="cn=proxyhlrb,ou=services,o=org,c=xx" 
passwd="secret" 

server=ldap.initialize(host+"/"+baseDN) 

server.bind_s(userDN,passwd,ldap.AUTH_SIMPLE) 

這裏有什麼問題?根據文檔,根據RFC4516,ldap.initialize的參數必須是有效的LDAP URL,因此使用主機+ baseDN應該可以工作。有沒有另一種方式來指定python-ldap中的baseDN?

回答

0

我覺得這個資源對你很有意思。它很好地解釋瞭如何將LDAP與Python相結合。

http://www.packtpub.com/article/python-ldap-applications-ldap-opearations

編輯:該端口使用的是正確的嗎?在PHP中,開發人員主要使用端口389進行LDAP連接,綁定和查詢。

+0

我知道你推薦的來源。它確實解釋瞭如何使用基本DN進行搜索,但不知道如何使用通用基本DN進行連接。端口636是ldaps的默認端口! – asmaier 2009-11-18 16:25:10

+0

它不起作用有點相同?您連接到您的服務器,您使用有效憑證或匿名進行綁定。如果綁定成功,您可以搜索ldap服務器並使用您的baseDN來根據需要篩選結果? – Ben 2009-11-18 16:33:58

+0

它有點相同,但很不方便。我必須使用searchDN =「ou = persons」,baseDN或searchDN =「ou = accounts」,baseDN等searchDN來更改我的代碼中的每個搜索調用。我認爲應該有更好的方法... – asmaier 2009-11-18 16:58:12