使用Spring LDAP获取内部属性
我正在使用Spring LDAP 1.3.0使用Java访问内部LDAP服务器的库,但我遇到了一个麻烦事情:如何获取内部属性LDAP的任何结构?例如,我如何获得用户的成员的属性?使用Spring LDAP获取内部属性
我曾经搜索了很多,但没有找到有关使用Spring LDAP的任何内容。 任何想法都将非常受欢迎。谢谢。
它也适用于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;
}
});
我敢肯定有一个更好的方式来做到这一点,但它的工作原理。
谢谢!在所有帖子的搜索结果中,这是唯一对我有用的。 +1。 – BillFromHawaii 2014-10-21 16:42:52
我很高兴这对你有帮助! – 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());
我找到了一种方法,这是非常简单的。示例: _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