Как добавить данные по умолчанию из файла Ldif на сервер Ldap с помощью java API?

Мне нужно добавить объемные данные на сервер LDAP из файла ldif. Я исследовал API-интерфейсы Java, но не могу найти подходящий

Я уже пытался использовать LdapTestUtils, но для этого требуется перезапуск сервера. Мне нужен другой способ, кроме этого


person UDIT JOSHI    schedule 30.07.2019    source источник


Ответы (2)


Вам нужно будет использовать отдельную библиотеку с API, поддерживающим импорт LDIF. Когда-то такой библиотекой является apache Directory LDAP API. Библиотека в целом совместима с большинством серверов LDAP.

См. документация, класс LdifFileLoader имеет функции для импорта LDIF в тандеме с классом DefaultDirectoryService (к сожалению, я не могу найти свой более ранний код, демонстрирующий импорт LDIF). Вы можете сослаться на этот пост, в котором показано, как использовать выше, хотя здесь речь идет о проблеме другого типа.

Я не уверен в том, какой LDAP-сервер вы используете, однако вы можете попробовать вышеизложенное и проверить.

person Ironluca    schedule 30.07.2019

Это также можно сделать с помощью LdapTemplate. LdapParser проанализирует запись из файла ldif в форме LdapAttribute, а затем привяжет эту запись через ldapTemplate.bind.

LdapContextSource contextSource = new LdapContextSource();

        contextSource.setUrl("ldap://192.168.99.101:389/");
        contextSource.setUserDn("uid=admin,dc=abc,dc=com");
        contextSource.setPassword(********);
        contextSource.setPooled(false);
        contextSource.afterPropertiesSet();

        LdapTemplate template = new LdapTemplate(contextSource);
        LdifParser parser = new LdifParser(new ClassPathResource("schema.ldif"));
        parser.open();
        while (parser.hasMoreRecords()) {
            LdapAttributes record = parser.getRecord();
            LdapName dn = record.getName();
            template.bind(dn, null, record);
        }
person UDIT JOSHI    schedule 02.08.2019