我试图获取,存储并依次使用objectGUID来查询Active Directory。
为了获得用户属性,我正在使用以下

public static class MyDnKeyValueAttMapper implements AttributesMapper<Object> {
        @Override
        public List<LdapKeyValueList> mapFromAttributes(Attributes attributes)
                throws NamingException, javax.naming.NamingException {
            List<LdapKeyValueList> attributeKeyValMap = new ArrayList<LdapKeyValueList>();
            NamingEnumeration<String> namingEnumeration = attributes.getIDs();

            while (namingEnumeration.hasMoreElements()) {
                String attributeName = (String) namingEnumeration.nextElement();
                String AttributeValue = attributes.get(attributeName).get().toString();
                attributeKeyValMap.add(new LdapKeyValueList(attributeName, AttributeValue));
            }
            return attributeKeyValMap;
        }
    }

objectGuid似乎总是以字符串格式返回。
我也尝试过-
UUID guid = (UUID) attributes.get("objectGUID").get();

这将引发“无法将字符串转换为uuid”的错误

好像在我可以做任何事情之前ldaptemplate搜索总是返回字符串格式的属性。

如何获取“objectGUID”的格式,以便我可以存储它并在ldapTemplate搜索查询中使用。

提前致谢。

最佳答案

如果您不希望将二进制属性(objectGUID具有Octet String语法)检索为字符串,则必须这样说。使用Spring,您必须将<entry key="java.naming.ldap.attributes.binary" value="objectGUID"/>添加到您的上下文环境中。

稍后byte[] guid = (byte[]) namingEnumeration.getAttributes().get("objectGUID").get();应该返回您要查找的内容。

刚刚输入,未经测试。

09-26 12:26