2012-01-04 4 views
2

Я использую Библиотека Spring LDAP 1.3.0 для доступа к внутреннему LDAP-серверу с Java, но у меня возникают проблемы, чтобы сделать одно: как я могу получить внутренний атрибут любая структура LDAP? Например, как я могу получить атрибут memberOf пользователя?Получить внутренние атрибуты с помощью Spring LDAP

Я когда-либо много искал, но не нашел ничего об этом, используя Spring LDAP. Любые идеи будут очень желанными. Благодарю.

+0

Я нашел способ, и это очень просто. Пример: _getLdapTemplate(). Search ("dc = MY_COMPANY, dc = com, dc = br", "(& (objectClass = person) (uid = USER_UID))", SearchControls.SUBTREE_SCOPE, новый String [] {" memberOf "}, новый UserAttributeMapper()); _ Наблюдение: в этом коде ** UserAttributeMapper ** является моей собственной реализацией ** org.springframework.ldap.core.AttributesMapper **. –

ответ

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» ....

3

Как вы сказали в комментарии 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

+0

Я рад, что это было полезно для вас! – fdelsert

Смежные вопросы