Как обнаружить все атрибуты, поддерживаемые классом объектов в контексте каталога в LDAP

Я пытался найти способ обнаружить все атрибуты, поддерживаемые классом объектов в контексте каталога. Я попытался использовать метод getattributes() контекста каталога, но он отображает только те атрибуты, которые заполнены. Меня интересует обнаружение всех атрибутов, поддерживаемых только определенным классом объектов, а не всеми атрибутами для всех классов объектов. Ниже приведены фрагменты кода, которые я уже пробовал.

//Подход 1

        System.out.println("using bindings.......");

        SearchControls searchControls = new SearchControls();
        searchControls.setSearchScope( SearchControls.OBJECT_SCOPE );
        searchControls.setReturningAttributes( new String[]
            { "objectClasses" } );
        NamingEnumeration<SearchResult> results = conn.getInitialContext().search( "cn=schema", "(ObjectClass=*)", searchControls );

        SearchResult result = results.next();
        Attributes entry = result.getAttributes();

        javax.naming.directory.Attribute objectClasses = entry.get( "objectClasses" );
        System.out.println( objectClasses );

        System.out.println("................................");

//Подход 2

        DirContext tedClasses = (conn.getInitialContext().getSchemaClassDefinition(entryName));

        // Enumerate the class definitions
        NamingEnumeration namingEnum = tedClasses.search("", null);
        System.out.println("attrs are:");
        while (namingEnum.hasMore()) {
            System.out.println(namingEnum.next());
        }

Где conn.getInitialContext() дает контекст каталога


person Sai Kumar    schedule 24.06.2014    source источник
comment
Вы упомянули, что пробовали определенные подходы. Пожалуйста, покажите код этих попыток.   -  person Sabuncu    schedule 24.06.2014
comment
Привет, Сабунку, я обновил вопрос подходами, которые я уже пробовал.   -  person Sai Kumar    schedule 25.06.2014
comment
Подход 2 является правильным решением. Что произошло, когда вы попробовали это?   -  person user207421    schedule 06.07.2014


Ответы (1)


Можете ли вы выполнить ldapsearch, указав objectclass=x (где x — нужный вам объектный класс)?

Итак, поиск объектного класса человека, например.

ldapsearch -h <host> -p <port> -D <useraccount> -w \? -b <search string> objectclass=person
person maddop    schedule 24.06.2014