首页 > 解决方案 > 如何转义 ldap 查询中的特殊字符?

问题描述

我在 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(",", "\\,")

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

标签: javaactive-directoryldap

解决方案


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

问题是,当我试图搜索一个 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


推荐阅读