红帽目录服务器-转义特殊字符

时间:2018-07-23 12:33:12

标签: java ldap redhat

对Red Hat Directory Server运行以下搜索查询时,出现错误“执行搜索ERR_04149时出错,不是有效的转义值”:

cn = cn \ 3DnsPwPolicyEntry \,ou \ 3Dinternal \,o \ 3Dcompany \,c \ 3Dgr,cn = nsPwPolicyContainer,ou = internal,o = company,c = gr

关于如何正确转义字符的任何想法?

3 个答案:

答案 0 :(得分:0)

根据LDAP wiki,需要转义的字符为:

  

逗号,
  反斜杠字符\
  磅符号(哈希符号)#
  加号+   小于符号<< br />   大于符号>
  分号;
  双引号(引号)“
  等号=
  前导或尾随空格

您似乎正在尝试转义不需要转义的数字。

此外,以下字符也不需要转义:

* ( ) . & - _ [ ] ` ~ | @ $ % ^ ? : { } ! '

答案 1 :(得分:0)

  

cn = cn \ 3DnsPwPolicyEntry \,ou \ 3Dinternal \,o \ 3Dcompany \,c \ 3Dgr,cn = nsPwPolicyContainer,ou = internal,o = company,c = gr

在我看来这是伪造的,因为此RDN值看起来像您已经用字节编码转义了所有等号:

cn\3DnsPwPolicyEntry\,ou\3Dinternal\,o\3Dcompany\,c\3Dgr

如果您确实想使用该值,则还必须转义逗号。我敢肯定,通常不会在 cn = nsPwPolicyContainer,ou = internal,o = company,c = gr 下添加带有这样的RDN的条目。无论您使用什么代码,似乎都存在另一个问题。

为避免发生此类问题而不必深入研究RFC 4514,我强烈建议对具有喜欢的引号功能的人喜欢的编程语言使用像样的LDAP模块软件包,而不要滚动自己的本地脚本。

答案 2 :(得分:0)

此字符串对我有用:

String globalPolicyDn="cn=cn\\3DnsPwPolicy\\,ou\\3Dinternal\\,o\\3Dcompany\\,c\\3Dgr,cn=nsPwPolicyContainer,ou=internal,o=company,c=gr";