Syntax 如何在LDAP搜索筛选器中使用包含逗号的DN作为属性值?

Syntax 如何在LDAP搜索筛选器中使用包含逗号的DN作为属性值?,syntax,ldap,ldap-query,Syntax,Ldap,Ldap Query,试图根据值为DN的属性搜索我们的目录。但是,我们的用户RDN的形式为CN=name,GivenName,这要求在完整的DN中引用逗号。但是给定一个属性,比如manager,它的值是另一个用户的DN,我无法搜索具有特定manager的所有用户。我尝试了(manager=CN=name\,GivenName,CN=users,DC=mydomain,DC=com),但出现语法错误“错误的搜索筛选器”。我尝试了各种引用DN的选项,但都给了我一个语法错误或无法匹配任何对象。我做错了什么 (请注意,如果我

试图根据值为DN的属性搜索我们的目录。但是,我们的用户RDN的形式为
CN=name,GivenName
,这要求在完整的DN中引用逗号。但是给定一个属性,比如
manager
,它的值是另一个用户的DN,我无法搜索具有特定manager的所有用户。我尝试了
(manager=CN=name\,GivenName,CN=users,DC=mydomain,DC=com)
,但出现语法错误“错误的搜索筛选器”。我尝试了各种引用DN的选项,但都给了我一个语法错误或无法匹配任何对象。我做错了什么


(请注意,如果我直接查找用户对象,我可以简单地搜索
(CN=姓氏,GivenName)
,无需引用,但我搜索的是具有特定管理器的用户。包含属性值的逗号只有在作为可分辨名称的一部分时才会出现问题。)问题在于,在通用名称中引用逗号不是为了过滤器解析器的利益,而是为了DN解析器的利益;过滤器传递给它的属性值必须包含反斜杠字符。不幸的是,反斜杠在LDAP筛选器中也是(不同的)特殊的,因此语法错误

解决方案很简单,但不如将反斜杠加倍那么明显;LDAP筛选器中的反斜杠与URI中的
%
类似,因此必须使用文字反斜杠,后跟两位十六进制代码点作为反斜杠:

(manager=CN=Surname\5c, Givenname,OU=org,DC=mydomain,DC=com)
事实证明,在最底层有一个特定用例的例子