使用Spring LDAP获取内部属性

问题描述:

我正在使用Spring LDAP 1.3.0使用Java访问内部LDAP服务器的库,但我遇到了一个麻烦事情:如何获取内部属性LDAP的任何结构?例如,我如何获得用户的成员的属性?使用Spring LDAP获取内部属性

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

+0

我找到了一种方法,这是非常简单的。示例: _getLdapTemplate()。search(“dc = MY_COMPANY,dc = com,dc = br”,“(&(objectClass = person)(uid = USER_UID))”,SearchControls.SUBTREE_SCOPE,new String [] {观察:在这段代码中,** UserAttributeMapper **只是我自己实现的** org.springframework.ldap.core.AttributesMapper **。 – 2012-01-04 18:25:02

它也适用于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”领域....

正如你在评论说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; 
     } 
    }); 

我敢肯定有一个更好的方式来做到这一点,但它的工作原理。

+0

谢谢!在所有帖子的搜索结果中,这是唯一对我有用的。 +1。 – BillFromHawaii 2014-10-21 16:42:52

+0

我很高兴这对你有帮助! – fdelsert 2014-10-21 18:52:38

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

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