Настройка eXist — LDAP security manager

#ldap #exist-db

#ldap #exist-db

Вопрос:

Я пытаюсь настроить eXist на LDAP для аутентификации пользователей, и я проверил документацию на eXist LDAP Security. Оказывается, конфигурация по умолчанию поддерживает только три параметра: security.ldap.connection.url (URL подключения к серверу LDAP), security.ldap.dn.user (DN списка пользователей) и security.ldap.dn.group (DN списка групп).

В моем случае это не работает, потому что сервер LDAP не разрешает анонимные запросы, что означает, что я должен предоставить имя пользователя / пароль для установления соединения.

Есть предложения о том, как я мог бы добиться этого, кроме как включить анонимные запросы на сервере LDAP?

Спасибо, Томас

Ответ №1:

Похоже, вы можете реализовать свою собственную фабрику контекста и настроить ее на exist с помощью параметра security.ldap.ContextFactory.ContextFactory.

Фабрика контекста — это класс Java, используемый для инициализации соединения с каталогом. Вы можете реализовать фабрику контекста, которая инициализирует соединение с помощью специальных учетных данных.

Идея состоит в том, чтобы реализовать класс, подобный этому:

 public class MyCustomContextFactory implements InitialContextFactory {

  public Context getInitialContext(Hashtable env) {

    // Fetch the application DN and password somehow (config file...)
    String applicationDN = ...;
    String password = ...;

    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, applicationDN);
    env.put(Context.SECURITY_CREDENTIALS, password);

    return new InitialDirContext(env);

  }
}
  

Вы создаете jar-файл, добавляете его в classpath вашего сервера и указываете параметр конфигурации:

 security.ldap.contextFactory = your.java.package.name.MyCustomContextFactory