【问题标题】:How to use a DN containing commas as the attribute value in an LDAP search filter?如何在 LDAP 搜索过滤器中使用包含逗号的 DN 作为属性值?
【发布时间】:2018-03-08 16:17:44
【问题描述】:

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

(请注意,如果我直接查找用户对象,我可以简单地搜索(CN=Surname, GivenName),不需要引用,但我正在搜索具有特定经理的用户。包含逗号的属性值只会成为问题作为专有名称的一部分。)

【问题讨论】:

    标签: syntax ldap ldap-query


    【解决方案1】:

    问题是在Common Name中引用逗号不是为了过滤解析器的利益,而是为了DN解析器的利益;过滤器传递给它的属性值必须包含反斜杠字符。不幸的是,反斜杠在 LDAP 过滤器中也(不同地)特殊,因此会出现语法错误。

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

    (manager=CN=Surname\5c, Givenname,OU=org,DC=mydomain,DC=com)
    

    事实证明,在https://docs.oracle.com/cd/E19424-01/820-4811/gdxpo/index.html#6ng8i269q 的最底部有一个特定用例的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      相关资源
      最近更新 更多