java - 如何转义 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(",", "\\,")
等等这里的逻辑应该是什么?
解决方案
我找到了解决方案,但它非常特定于这种情况,我们只指定一个反斜杠\
和一个逗号,,
即\,
问题是,当我试图搜索一个 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
推荐阅读
- python - 如何从给定数据中抓取一些信息(例如作者姓名和 url)
- flutter - Flutter 类型“_SimpleUri”不是“String”类型错误的子类型
- c - 无法从 C 管道读取多个结构类型消息
- python - 如何绘制带阴影的近似曲线
- android - 单击一本书后,下一个活动仅显示一个空白页
- javascript - 将动态输入字段存储为对象数组
- sql-server - 在派生列转换编辑器中从 SSIS 中的代码中删除所有字母
- visual-studio-2010 - 入门/欢迎屏幕问题
- excel - 通过将 A 列的值从 sheet2 匹配到 A 列 sheet1,复制 sheet2 的 B 列
- ruby-on-rails - 如何使用 Ruby 获得 JWT?