Как настроить синхронизацию и авторизацию пользователей в случае нескольких LDAP/AD

Как настроить синхронизацию и авторизацию пользователей в случае нескольких LDAP/AD

Вопросы и ответы по серверу BOOCO Astra (v 2.x)

Описание задачи

Есть 2 или более службы каталогов, доступных по протоколу LDAP (например, 2 Active Directory) и есть задача, чтобы пользователи из обоих AD были синхронизированы с BOOCO и могли авторизоваться.

Решение

Начиная с версии BOOCO 2.24.1 (ldap-access 1.14.0), мы поддерживаем несколько служб каталогов. Необходимо выполнить следующие шаги:

  • Настроить и запустить 2 (или сколько нужно) экземпляра ldap-access
  • Настроить шаблон логина, в котором будет указано в какую службу каталогов направлять тех или иных пользователей

Настройка нескольких экземпляров ldap-access

Необходимо выполнить все шаги, которые указаны в разделе про ldap-access для обоих экземпляров.

В .env необходимо указать разные названия сервисов и контейнеров - SERVICE_NAME и CONTAINER_NAME.

Например:

Сервис 1:

SERVICE_NAME=ldap-access-booco
CONTAINER_NAME=ldap-access-booco

# ... - другие настройки стандартно

Сервис 2:

SERVICE_NAME=ldap-access-test
CONTAINER_NAME=ldap-access-test

# ... - другие настройки стандартно

После этого запустить оба сервиса. При первом запуске ldap-access добавляет в booco.yml свою конфигурацию (раздел services), чтобы можно было редактировать настройки через UI.

services:
  ldap-access-booco:
    options:
      type: ldap-access
      usernamePattern: "^BOOCO\\.+$" # регулярное выражение с шаблоном для входа
      usernameFormat: "BOOCO\\{uid}"
      bindCredentials: <...> # В этом поле хранится зашифрованный пароль (его можно редактировать только через UI или задать в .env
      ldapUrl: ldap://ldap.forumsys.com
      searchUsersFilter: (objectClass=person)
      baseDn: "dc=example,dc=com"
      attributes: mail,jobTitle,telephoneNumber,mobile,department,displayName,uid,userPrincipalName,thumbnailPhoto
      userDnTemplate: "BOOCO\\uid={uid}"
      userFilter: "(uid={uid})"
      bindDn: "cn=read-only-admin,dc=example,dc=com"
    url: http://ldap-access-booco:3003
  ldap-access-test:
    ...

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

💡
Если поля заполнены в .env, то эти поля будут всегда браться из него, введенные значения в booco.yml будут игнорироваться, а в UI поля будут отображаться в режиме только для чтения.
⚠️
Необходимо проверить наличие поля type: ldap-access и если его нет нужно добавить вручную.

Настройка шаблонов логина

По введеному пользователем логину определяется в каком из сервисов будет проверяться авторизация пользвоателя. За это отвечает поле usernamePattern.

usernamePattern - представляет собой регулярное выражение. При необходимости использовать знак \ его нужно дублировать ⇒ \\

usernamePattern: "^BOOCO\\.+$" - означает формат ввода BOOCO\<любое строка>. Если пользователь ввел в таком формате, то для авторизации будет использоваться сервис ldap-access-booco.

Синхронизация

Для каждого сервиса необходимо настроить синхронизацию пользователей (до того как пользователи будут синхронизированы, они не могут авторизоваться). Синхронизация настраивается стандартным образом. При синхронизации SERVICE_NAME используется как имя службы каталогов для пользователя (не отображается в UI). По этому имени каждый сервис определяет “своих” пользвоателей.

⚠️
Нельзя, чтобы в разных каталогах были пользователи с одинаковыми email-адресами.

Правила синхронизации

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