如何转义 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
我在 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