如何转义 ldap 查询中的特殊字符?

How to escape the special character in an ldap query?

我在 LDAP 上有一个用户使用基本 DN

=CN=abc def\, ghi,CN=jkl,DC=mno,DC=pqr

密码是xyz.

我想在 ldap 中搜索这个用户,我该怎么做?一件事很清楚,LDAP 查询应该是这样的,

CN=abc def\\, ghi\,CN=jkl\,DC=mno\,DC=pqr,xyz

尝试了这些解决方案

.getBindUserDN().replaceAll("[,]", "\\\,").getBindUserDN().replaceAll(",", "\,")

等这里的逻辑应该是什么?

我找到了解决方案,但它非常针对这种情况,我们只指定一个反斜杠 \ 和一个逗号 ,,即 \,

问题是,当我试图搜索 ldap 条目时,我直接使用了 Bind DN 的值。后来在尝试和错误方法之后,我了解到当我搜索它的密钥时,我们需要 6 个反斜杠,即 \\\ 来找到它的密钥,因为 LDAP 用 3 个反斜杠和逗号 \\, 存储它。

但是当我要查看 Ldap 中的这个密钥时,现在我需要使用这个新的密钥进行搜索,这意味着应该有 6 个反斜杠。所以我必须用这些反斜杠数量的两倍来搜索它,即 12 \\\\\\

PS:- This Solution appltes to a very particular case. But Logic should be similar if someone needs to apply it in a different way