4

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

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

4

3 回答 3

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;
        }
    });

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

于 2012-08-24T16:06:35.133 回答
1

我用它来获取像“createTimestamp”或“pwdChangedTime”这样的字段,而UserContextMapper你可以参考资源:http ://docs.spring.io/spring-ldap/docs/1.3.x-SNAPSHOT/reference/htmlsingle/

ldapTemplate.lookup(dn, new String[] {"*", "+"}, new UserContextMapper());
于 2017-07-21T01:59:26.793 回答
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”这样的字段......

于 2012-04-20T08:54:47.450 回答