4. Интеграция с LDAP
Интеграция с LDAP
В этой главе — про вход через корпоративный каталог (LDAP / Active Directory) и про то, как Accelera решает, какую роль выдать LDAP-пользователю.
Как работает вход через LDAP
- Пользователь вводит в форму логина свой корпоративный логин и пароль.
- Accelera пытается аутентифицировать его в LDAP.
- Если аутентификация прошла — Accelera запрашивает список групп, в которых состоит этот пользователь (через атрибут
memberOfв Active Directory или через поиск поmemberв OpenLDAP). - Из этих групп выбирается первая, для которой найдено сопоставление с ролью Accelera.
- Пользователю выдаётся соответствующая роль и создаётся (или обновляется) запись в локальной таблице пользователей.
Локальный пароль такому пользователю не сохраняется — следующий вход опять пойдёт через LDAP.
Как настраивается соответствие «LDAP-группа → роль»
В Accelera 4.0.0 соответствие хранится в поле **ldap_group** у каждой роли (через UI: Администрирование → Роли → Редактировать роли). Если пользователь состоит в группе с таким именем — он получит эту роль.

Поиск идёт по точному совпадению имени группы. Регистр и пробелы должны совпадать с тем, что отдаёт LDAP-сервер.
Дефолтные значения после установки
| Роль | LDAP-группа по умолчанию |
|---|---|
admin | AcceleraAdmins |
user | AcceleraUsers |
readonly | AcceleraReadOnly |
screens-user | AcceleraScreensUser |
screens-read-only | AcceleraScreensReadOnly |
screens-maker | AcceleraScreensMaker |
В большинстве клиентских инсталляций корпоративные группы называются по-другому (например, Marketing-Admins, CIB-Analysts). После установки обязательно замените значения ldap_group на реальные имена групп клиента.
Fallback: env-переменные
Если у роли поле ldap_group пустое или не нашлось ни одной подходящей роли — Accelera пробует резервный механизм через переменные окружения:
LDAP_ADMIN_ROLE=AcceleraAdmins
LDAP_USER_ROLE=AcceleraUsers
LDAP_READONLY_ROLE=AcceleraReadOnly
LDAP_SCREENS_USER_ROLE=AcceleraScreensUser
LDAP_SCREENS_READ_ONLY_ROLE=AcceleraScreensReadOnly
LDAP_SCREENS_MAKER_ROLE=AcceleraScreensMakerЭти переменные задаются в конфигурации деплоя (.env-файле или через переменные окружения сервиса). Менять их через UI нельзя.
Рекомендация: настраивайте сопоставления через UI (поле
ldap_group), а env-переменные используйте только как страховку.
Что нужно сделать после обновления (чек-лист)
После обновления на 4.0.0 LDAP-вход работает не сразу — нужны три шага:
- Узнать у IT-администратора клиента имена корпоративных групп, которые соответствуют ролям Accelera.
- Открыть Администрирование → Роли → Редактировать роли и в каждой роли заменить значение
LDAP группана реальное имя. - Проверить вход одним из тестовых LDAP-пользователей. Если в системе он не появлялся раньше — после первого успешного входа он появится в списке Пользователей со статусом
LDAP(см. главу 2 «Управление пользователями», раздел «Типы пользователей: локальные и LDAP»).
OpenLDAP vs Active Directory
Accelera 4.0.0 поддерживает оба варианта.
-
Active Directory (большинство корпоративных установок): используется атрибут
memberOf— сервер сам отдаёт список групп пользователя при аутентификации. Никаких дополнительных настроек обычно не нужно. -
OpenLDAP: если на сервере установлен overlay
memberof— поведение такое же, как у AD. Если overlay не установлен (это типично для старых OpenLDAP) — Accelera сама обходит группы поиском по атрибутуmember. Для этого нужно задать переменную окружения:LDAP_GROUPS_BASE=ou=Groups,dc=example,dc=comЭто базовый DN, в котором лежат группы. Уточните у IT-администратора клиента.
Типичные проблемы
LDAP-пользователь не может войти
Проверьте по порядку:
- Сервис вообще видит LDAP? В логах backoffice при попытке входа должны быть сообщения о подключении к LDAP. Если их нет — проверьте сетевую связность и переменные
LDAP_URL,LDAP_BIND_DN,LDAP_BIND_PASSWORD. - Аутентификация прошла, но роль не выдана? Убедитесь, что хотя бы для одной роли поле
ldap_groupсовпадает с реальной группой пользователя. Список групп пользователя можно посмотреть на стороне LDAP (ldapsearchили AD-консоль). - OpenLDAP без
**memberof**? УстановитеLDAP_GROUPS_BASE(см. выше).
LDAP-пользователь получает не ту роль
Если пользователь состоит в нескольких группах, и каждой из них соответствует своя роль Accelera, берётся та, которая встретилась первой при обходе. Чтобы избежать неоднозначности:
- Не назначайте одну и ту же
ldap_groupнескольким ролям. - Не давайте одному корпоративному пользователю несколько LDAP-групп, привязанных к разным ролям.
LDAP-пользователь после смены группы видит старые права
Права кэшируются на 5 минут. Либо подождите, либо сделайте пользователю logout/login — кэш сбросится.
Локальные пользователи параллельно с LDAP
LDAP не отменяет локальных пользователей. Можно одновременно:
- иметь несколько локальных учёток (например, технический
adminдля аварийных случаев); - разрешать LDAP-вход всем сотрудникам клиента.
При попытке входа Accelera сначала ищет пользователя в локальной таблице, и только если его там нет — идёт в LDAP.
Рекомендация безопасности: заведите хотя бы одного локального
admin-пользователя со сложным паролем и храните его в безопасном месте. Это спасёт, если LDAP-сервер будет недоступен или у ролиadminслетит привязка к LDAP-группе.
Приложение А. Обновление с 3.3.42 на 4.0.0
Если вы уже работаете с 4.0.0 и не помните 3.3.42 — этот раздел можно пропустить.
Ключевые отличия и риски при обновлении:
-
Маппинг LDAP-групп переехал в БД. В 3.3.42 это были только env-переменные
LDAP_ADMIN_ROLE,LDAP_USER_ROLE. После обновления старые значения остаются как fallback, но основной источник — полеldap_groupу роли. Действие: после обновления зайдите в Роли → Редактировать роли и проверьте, чтоldap_groupзаполнен правильно для каждой роли. -
Роль
**read-only**переименована в**readonly**. Если в БД есть пользователи со старой рольюread-only(с дефисом), миграция при обнаружении неизвестной роли назначит им рольuser— то есть права повысятся. Действие: перед миграцией выполнить:UPDATE users SET role = 'readonly' WHERE role = 'read-only';Если таких пользователей нет — пункт можно пропустить.
-
Доступ к endpoint'ам по умолчанию запрещён. В 3.3.42 middleware (
isAdmin,isUser) явно пропускали роли. В 4.0.0 endpoint без явного маппинга на право — закрыт. Действие: если у клиента есть кастомные endpoint'ы или плагины — проверьте, что они работают, и при необходимости попросите разработчиков добавить им маппинг прав. -
Redis обязателен. Права кэшируются в Redis с TTL 5 минут. Без Redis сервис не запустится корректно. Действие: убедиться, что Redis доступен.
Чек-лист перед обновлением
- Сделан бэкап БД.
- Известны корпоративные имена LDAP-групп клиента.
- В таблице
usersнет записей с рольюread-only(или они переименованы вreadonly). - Redis доступен.
- Имеется хотя бы один локальный
adminдля аварийного входа.
Что произойдёт автоматически
При запуске новой версии система сама создаст таблицы и роли, заполнит дефолтные ldap_group и переведёт всех существующих пользователей на новую модель. Никаких ручных шагов на стороне БД от администратора не требуется — нужно только выполнить чек-лист выше и после старта проверить настройки LDAP-групп через UI.