@ Zorkus: Я не уверен точно, с какой проблемой вы столкнулись с Apache Directory, и какова основная причина этого, но если все, что вам нужно, это работающий встроенный Java-сервер LDAP для тестирования интеграции с Spring Security тогда вы можете рассмотреть некоторые альтернативы.
Я недавно начал искать альтернативы, потому что я не смог добиться с Apache Directory того, чего хотел, несмотря на то, что вложил много времени и усилий. (В основном я хотел скопировать схему и базу данных пользователей экземпляра Active Directory на встроенный сервер.)
Я обнаружил, что UnboundID LDAP SDK - хорошая замена. Интеграция с ним требует немного больше усилий, чем однострочная в вашем весеннем контексте (например, <security:ldap-server/>
), но не намного больше. Для запуска сервера LDAP требуется всего несколько строк кода:
InMemoryDirectoryServerConfig config =
new InMemoryDirectoryServerConfig("dc=example, dc=com");
// schema config only necessary if the standard
// schema provided by the library doesn't suit your needs
config.setSchema(Schema.getSchema("your-custom-schema.schema"));
// listener config only necessary if you want to make sure that the
// server listens on port 33389, otherwise a free random port will
// be picked at runtime - which might be even better for tests btw.
config.setListenerConfigs(
new InMemoryListenerConfig("myListener", null, 33389, null, null, null));
InMemoryDirectoryServer ds = new InMemoryDirectoryServer(config);
ds.startListening();
// import your test data from ldif files
ds.importFromLDIF(true,"content.ldif");
Единственная зависимость, которая вам понадобится для работы:
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>2.3.1</version>
</dependency>
Было бы довольно легко обернуть вышеупомянутый код в класс, который вы можете создать и настроить из своего контекста Spring.
Документация и примеры кода для UnboundID LDAP SDK см .: https://www.unboundid.com/products/ldap-sdk/docs/
(Я никак не связан с UnboundID.)