Java Spring LdapTemplate-如何读取具有相同属性名称的值

Java Spring LdapTemplate-如何读取具有相同属性名称的值,java,spring,ldap,Java,Spring,Ldap,我想阅读一个用户的所有组,并将它们放入一个列表中 这就是ldap查询: ldapsearch-h[服务器名称]-p[端口]-s子节点-b “ou=people,ou=foo,o=bar,c=com”“(id=123)” 结果如何: 身份证号码:123 姓名:约翰 名字:贝克 grouplist:cn=GROUP1.COM,cn=GROUPS,ou=FOO,o=BAR,c=COM grouplist:cn=GROUP2.COM,cn=GROUPS,ou=FOO,o=BAR,c=COM 我使用Spr

我想阅读一个用户的所有组,并将它们放入一个列表中

这就是ldap查询:

ldapsearch-h[服务器名称]-p[端口]-s子节点-b “ou=people,ou=foo,o=bar,c=com”“(id=123)”

结果如何:

身份证号码:123

姓名:约翰

名字:贝克

grouplist:cn=GROUP1.COM,cn=GROUPS,ou=FOO,o=BAR,c=COM

grouplist:cn=GROUP2.COM,cn=GROUPS,ou=FOO,o=BAR,c=COM

我使用Spring的LdapTemplate实现。它工作得很好,但是当结果具有多个同名属性(请参见上面的“grouplist”)时,如何处理这些结果?我尝试使用IncrementAlatAttributesMapper,但没有成功

public MyUser getUser(String userId) {
   LdapQuery searchQuery = LdapQueryBuilder.query()
                .base("ou=people,ou=foo,o=bar,c=com")
                .searchScope(SearchScope.SUBTREE)
                .filter(new EqualsFilter("id", userId));

   return ldapTemplate.search(searchQuery, getUserAttributesMapper());
}

public static AttributesMapper getUserAttributesMapper() {
        return attributes -> {

            IncrementalAttributesMapper groupAttributesMapper = new DefaultIncrementalAttributesMapper("grouplist");

            MyUser myUser = MyUser.builder()
                 .id(attributes.get("id").get().toString())
                 .name(attributes.get("name").get().toString())
                 .firstname(attributes.get("firstname").get().toString())
                 .groupIds(groupAttributesMapper.getValues("cn"))
                 .build();

            return myUser;
        };
    }
当我尝试按如下方式读取属性时:

attributes.get("grouplist").get().toString()
我只得到第一组:

grouplist:cn=GROUP1.COM,cn=GROUPS,ou=FOO,o=BAR,c=COM


提前感谢您的支持

我使用以下代码解决了类似的问题:

List values = DefaultIncrementalAttributesMapper.lookupAttributeValues(ldapTemplate, baseDN, "member");
在这种情况下,我有一个包含几个成员的组。像这样:

member: CN=Name1,OU=Users,DC=bar,DC=foo,DC=com
member: CN=Name2,OU=Users,DC=bar,DC=foo,DC=com
member: CN=Name3,OU=Users,DC=bar,DC=foo,DC=com

因此,我得到了一个组中独立成员的列表。

属性。get(“组列表”)
返回一个可以迭代的集合。这很有帮助,也是我见过的一个不同的解决方案。谢谢福克斯。