使用Spring LDAP获取内部属性

时间:2012-01-04 18:06:11

标签: java ldap spring-ldap

我正在使用 Spring LDAP 1.3.0 库来访问带有Java的内部LDAP服务器,但我遇到了一件麻烦:我怎样才能获得任何内部属性LDAP的结构?例如,如何获取用户的 memberOf 属性?

我曾经搜索过很多但是没有找到任何关于使用Spring LDAP的内容。 任何想法都将非常受欢迎。感谢。

3 个答案:

答案 0 :(得分:4)

正如您在评论中所说, UserAttributeMapper 是您的朋友!

如果用户有多个'memberof':

    static List<List<String>> getPersonGroupsByAccountName(String accountName){

    EqualsFilter filter = new EqualsFilter("sAMAccountName", accountName);
    return ldap.search(DistinguishedName.EMPTY_PATH,filter.encode(),new AttributesMapper(){
        public Object mapFromAttributes(
                javax.naming.directory.Attributes attrs)
        throws javax.naming.NamingException {
            List<String> memberof = new ArrayList();
            for (Enumeration vals = attrs.get("memberOf").getAll(); vals.hasMoreElements();) {
                memberof.add((String)vals.nextElement());
            }
            return memberof;
        }
    });

我确信有更好的方法可以做到这一点但是有效。

答案 1 :(得分:0)

它也适用于odmManager。像

这样的东西
DistinguishedName dn = new DistinguishedName("The path your are searching in");
SearchControls searchControls = new SearchControls();
searchControls.setReturningObjFlag(true);
searchControls.setReturningAttributes("your attributes, as an array of strings");
return odmManager.findAll(User.class, dn, searchControls);

我用它来获取像“createTimestamp”....

这样的字段

答案 2 :(得分:0)

我用它来获取“createTimestamp”或“pwdChangedTime”等字段, 和UserContextMapper,您可以参考资源:http://docs.spring.io/spring-ldap/docs/1.3.x-SNAPSHOT/reference/htmlsingle/

ldapTemplate.lookup(dn, new String[] {"*", "+"}, new UserContextMapper());