Вопросы и ответы по серверу 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:
...
Если раздел не появится, то его можно добавить вручную, оставив, все поля пустыми.
type: ldap-access
и если его нет нужно добавить вручную.Настройка шаблонов логина
По введеному пользователем логину определяется в каком из сервисов будет проверяться авторизация пользвоателя. За это отвечает поле usernamePattern
.
usernamePattern
- представляет собой регулярное выражение. При необходимости использовать знак \
его нужно дублировать ⇒ \\
usernamePattern: "^BOOCO\\.+$"
- означает формат вводаBOOCO\<любое строка>
. Если пользователь ввел в таком формате, то для авторизации будет использоваться сервисldap-access-booco
.
Синхронизация
Для каждого сервиса необходимо настроить синхронизацию пользователей (до того как пользователи будут синхронизированы, они не могут авторизоваться). Синхронизация настраивается стандартным образом. При синхронизации SERVICE_NAME
используется как имя службы каталогов для пользователя (не отображается в UI). По этому имени каждый сервис определяет “своих” пользвоателей.
Правила синхронизации
Настройка правил синхронизации выполняется стандартным образом, но, необходимо принять во внимание, что правила распространяются на оба сервиса. В текущей версии не поддерживаются раздельные правила для разных сервисов.