错误的搜索过滤器
Bad search filter
我试图从 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
事实上,您的搜索过滤器很糟糕。
|
字符用于在 OR
语句中将多个条件连接在一起。例如,如果您想查找姓氏为 "smith"、"jones" 或 "baker" 的人,您可以使用此过滤器:
(|(lastname=smith)(lastname=jones)(lastname=baker))
但是,您的过滤器只有一个条件,因此 |
字符没有任何内容可以连接在一起。将您的过滤器更改为此,它应该可以工作:
"(uid=" + username + "\*)"
顺便问一下,你想用反斜杠和星号做什么?您在寻找用户名实际上以星号结尾的人吗?
我试图从 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
事实上,您的搜索过滤器很糟糕。
|
字符用于在 OR
语句中将多个条件连接在一起。例如,如果您想查找姓氏为 "smith"、"jones" 或 "baker" 的人,您可以使用此过滤器:
(|(lastname=smith)(lastname=jones)(lastname=baker))
但是,您的过滤器只有一个条件,因此 |
字符没有任何内容可以连接在一起。将您的过滤器更改为此,它应该可以工作:
"(uid=" + username + "\*)"
顺便问一下,你想用反斜杠和星号做什么?您在寻找用户名实际上以星号结尾的人吗?