Получить внутренние атрибуты с помощью Spring LDAP - PullRequest
4 голосов
/ 04 января 2012

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

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

Ответы [ 3 ]

4 голосов
/ 24 августа 2012

Как вы сказали в комментарии 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 голосов
/ 21 июля 2017

Я использую это для получения полей типа "createTimestamp" или "pwdChangedTime", и UserContextMapper вы можете ссылаться на ресурсы: http://docs.spring.io/spring-ldap/docs/1.3.x-SNAPSHOT/reference/htmlsingle/

ldapTemplate.lookup(dn, new String[] {"*", "+"}, new UserContextMapper());
0 голосов
/ 20 апреля 2012

Также работает с 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" ....

...