我正在使用 java ldap 访问活动目录,更具体地说是 spring ldap。
当过滤器按照 rfc2254 中指定的方式进行编码时,按 objectGUID 进行组搜索不会产生任何结果。
这是十六进制表示形式的 guid:
\49\00\f2\58\1e\93\69\4b\ba\5f\8b\86\54\e9\d8\e9
spring ldap 对过滤器进行编码,如下所示:
(&(objectClass=group)(objectGUID=\5c49\5c00\5cf2\5c58\5c1e\5c93\5c69\5c4b\5cba\5c5f\5c8b\5c86\5c54\5ce9\5cd8\5ce9))
如中提到的rfc2254和在微软technet:
该字符必须编码为反斜杠 '' 字符 (ASCII
0x5c) 后跟代表 ASCII 的两个十六进制数字
编码字符的值。两个十六进制的情况
数字并不重要。
块引用
所以反斜杠应该是 '\5c'
但我从 AD 的上述过滤器没有得到任何结果。另外,如果我将该过滤器放入 AD 管理控制台自定义过滤器中,它也不起作用。
当我从过滤器中删除 5c 时,它可以在 java 和 AD 控制台中运行。
我在这里错过了什么吗?
当然,我可以在没有 5c 的情况下对过滤器进行编码,但我不确定它的方式是否正确,我更喜欢让 spring 对过滤器进行编码,因为它知道很多我应该手动执行的事情。
我认为博客条目位于:http://www.developerscrappad.com/1109/windows/active-directory/java-ldap-jndi-2-ways-of-decoding-and-using-the-objectguid-from-windows-active-directory/提供您需要的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)