1

我试图从 ldap 服务器过滤一些属性但得到错误,

ldap.FILTER_ERROR: {'desc': 'Bad search filter'}

代码:-

import ldap
ldap.OPT_REFERRALS = 0

ldap_server="ldapps.test.com"
username = "testuser"
password= "" #your password
connect = ldap.open(ldap_server)

dn='uid='+username;
print 'dn =', dn
try:
    result = connect.simple_bind_s(username,password)
    print 'connected == ', result
    filter1 = "(|(uid=" + username + "\*))"
    result = connect.search("DC=cable,DC=com,DC=com",ldap.SCOPE_SUBTREE,filter1)
    print result

except ldap.INVALID_CREDENTIALS as e:
    connect.unbind_s()
    print "authentication error == ", e
4

1 回答 1

0

实际上,您的搜索过滤器很糟糕。

该字符用于在一个语句|中将多个条件连接在一起。OR例如,如果您想查找姓氏为“smith”、“jones”或“baker”的人,您可以使用以下过滤器:

(|(lastname=smith)(lastname=jones)(lastname=baker))

但是,您的过滤器只有一个条件,因此|角色没有任何东西可以连接在一起。将您的过滤器更改为此,它应该可以工作:

"(uid=" + username + "\*)"

顺便说一句,你想用反斜杠和星号做什么?您是否正在寻找用户名实际上以星号结尾的人?

于 2016-03-29T15:35:16.517 回答