java - Spring LDAP 搜索 "ObjectGUID"

标签 java spring active-directory ldap uuid

我正在尝试使用“objectGUID”查询我的 ldapTemplate -

String myGuid = "\\00\\B2\\15\\6C\\7D\\1B\\4B\\C8\\BF\\87\\C5\\36\\86\\A8\\B0\\16";
List<Object> attributes =  ldapTemplate.search("", new EqualsFilter("objectGUID", myGuid).encode(), new MyGUIDMapper());

我的基本环境设置映射为 -

<beans:entry key="java.naming.ldap.attributes.binary" value="objectGUID objectSid"/>

这能够将objectGUID获取为byte[]。但是在查询 ldapTemplate 时,我没有得到任何结果。

这是通过 objectGUID 进行查询的正确实现吗?

最佳答案

问题在于 EqualsFilter(或 CompareFilter 的任何其他子类)仅需要纯文本字段并对它们进行编码以避免 LDAP 代码注入(inject)。

要避免这种编码,您可以使用 HardcodedFilter 代替。如果需要,您可以在搜索之前验证该值,以避免任何注入(inject)(如果您实际上没有自己对纯文本 GUID 进行编码)。

如果您想使用 objectSID 字段,这也适用。

ldapTemplate.search("", new HardcodedFilter("(objectGUID=" + myGuid + ")").encode(), new MyGUIDMapper());

关于java - Spring LDAP 搜索 "ObjectGUID",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42048173/

相关文章:

Javax 验证实现

java - 使用jumphost进行Eclipse远程调试

Spring原型(prototype)遵循原型(prototype)设计模式

java - Spring Boot 构建良好但抛出 javax.naming.NameNotFoundException : remaining name: env/jmx/runtime when running

java - 如何使用 UnboundID LDAP SDK 连接到本地主机?

.net - PowerShell - 如果用户输入凭据,则查询 AD 时出错

java - 如何在 JTable 中控制字体样式、颜色和大小?

java - 如何确定文件是否从 svn 补丁文件中添加/删除/修改

spring - MethodArgumentNotValidException 之后获取无效字段的值

c# - 自托管 Owin 端点中的客户端证书映射身份验证