2009-11-18 53 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