带有特殊字符(';+;';)的ldap搜索返回空值

带有特殊字符(';+;';)的ldap搜索返回空值,ldap,python-ldap,Ldap,Python Ldap,我想按唯一成员属性搜索组中的特定ldap节点。 差不多 search_filter = 'uniqueMember=mail='testuser.+abc@abc.com',ou=people,dc=myorg,dc=com' 当我使用搜索此文件管理器时 conn.search_s(node_dn, ldap.SCOPE_BASE, search_filter, []) 它返回{'info':'','desc':'Bad search filter'} 而类似的搜索不带“+”的搜索过滤器 s

我想按唯一成员属性搜索组中的特定ldap节点。 差不多

search_filter = 'uniqueMember=mail='testuser.+abc@abc.com',ou=people,dc=myorg,dc=com'
当我使用搜索此文件管理器时

conn.search_s(node_dn, ldap.SCOPE_BASE, search_filter, [])
它返回{'info':'','desc':'Bad search filter'}

而类似的搜索不带“+”的搜索过滤器

search_filter = 'uniqueMember=mail='testuser.abc@abc.com',ou=people,dc=myorg,dc=com'
返回所需的输出

我试过所有可能的方法逃跑。像

a. uniqueMember=mail='testuser.\+abc@abc.com',ou=people,dc=myorg,dc=com
b. uniqueMember=mail='testuser.\\+abc@abc.com',ou=people,dc=myorg,dc=com
c. uniqueMember=mail='testuser.\2Babc@abc.com',ou=people,dc=myorg,dc=com
d. uniqueMember=mail='testuser.\\2Babc@abc.com',ou=people,dc=myorg,dc=com
我尝试了'\2B',因为这是如何在apache directory studio中看到uniqueMember属性的

我正在使用python ldap 2.2.0和port389


在配置port389时是否缺少任何东西。请帮助。

加号
+
表示RDN是多值的

另见

您在文章中提到的如何解决这一特定场景并不十分清楚。需要的是找到唯一的成员。但是,当他们的电子邮件地址中有“+”时,它应该可以工作。这可能吗?正如我所写的,
+
表示
uniqueMember
的值有一个多值RDN,它没有什么特别之处
uniqueMember
有DN语法,所以这里也没有什么神秘之处。网页及其引用的所有网页都应包含所需的所有信息。