Ошибка LDAP authentication failed при попытке входа в Rocket.Chat почти всегда означает неверный DN пользователя, неправильный Base DN или проблему с TLS-сертификатом — проверьте эти три параметра в первую очередь, прежде чем пересматривать всю конфигурацию. Интеграция Rocket.Chat с каталогом LDAP (Active Directory, OpenLDAP, FreeIPA) позволяет централизованно управлять учётными записями сотрудников и не заводить пароли вручную в каждом мессенджере.
В этой статье разберём, как работает связка Rocket.Chat и LDAP, какие поля нужно заполнить в панели администратора, как проверить подключение до включения авторизации и что делать, если пользователи не могут войти. Материал ориентирован на администраторов, разворачивающих корпоративный сервер Rocket.Chat.
Как Rocket.Chat работает с LDAP
При включённом LDAP Rocket.Chat при входе пользователя не проверяет локальную базу паролей, а выполняет bind — подключение к LDAP-серверу от имени введённой учётной записи. Если каталог подтверждает логин и пароль, сервер создаёт или обновляет локального пользователя и пускает его в чат. Такой подход называется аутентификацией через внешний каталог.
Помимо входа, доступна синхронизация данных: имя, email, аватар и принадлежность к группам могут подтягиваться из атрибутов каталога при каждом входе или по расписанию. Это избавляет от ручного ведения профилей в мессенджере.
⚠️ Внимание: интерфейс и набор настроек LDAP в Rocket.Chat отличаются между версиями и редакциями (Community и Enterprise). Перед настройкой сверьтесь с официальной документацией именно вашей версии сервера — часть опций, например расширенная синхронизация групп, может быть недоступна в бесплатной редакции.
Подготовка: что нужно собрать заранее
Прежде чем открывать панель администратора, соберите параметры вашего каталога. Их можно уточнить у администратора домена или посмотреть в конфигурации других сервисов, уже подключённых к LDAP.
- 🖥️ Адрес и порт LDAP-сервера: обычно
389для LDAP и636для LDAPS - 🔑 Учётная запись для поиска (service account) с правом чтения каталога и её пароль
- 🌳 Base DN — корень поиска пользователей, например
OU=Users,DC=company,DC=local - 🔐 Тип шифрования: без шифрования, StartTLS или LDAPS
- 👤 Атрибут логина:
sAMAccountNameдля Active Directory илиuidдля OpenLDAP
Отдельно проверьте сетевую доступность: сервер Rocket.Chat должен достучаться до контроллера домена по нужному порту. Если между ними есть файрвол, откройте трафик заранее — иначе диагностика ошибок превратится в гадание.
Пошаговая настройка подключения
Войдите в Rocket.Chat под учётной записью администратора и откройте раздел настроек LDAP. Точный путь зависит от версии интерфейса, обычно это Администрирование → Настройки → LDAP. Дальнейшие шаги логически одинаковы для всех версий.
Сначала заполните блок подключения: хост, порт, тип шифрования и учётные данные для поиска. Затем укажите Base DN и фильтр поиска пользователей. Для Active Directory типичный фильтр выглядит как (&(objectClass=user)(sAMAccountName=#{username})), для OpenLDAP чаще используется (uid=#{username}). Сохраните настройки, но не включайте авторизацию сразу — сначала выполните тест.
☑️ Перед включением LDAP-авторизации
# Пример проверки каталога с сервера Rocket.Chat
ldapsearch -x -H ldap://dc01.company.local:389 \
-D "CN=svc-rocket,OU=Service,DC=company,DC=local" \
-W -b "OU=Users,DC=company,DC=local" \
"(sAMAccountName=testuser)"
Если команда возвращает запись пользователя — сеть, учётные данные и путь поиска корректны. Если нет, исправляйте параметры до тех пор, пока поиск не заработает, и только потом переходите к настройке мессенджера.
Тестирование и включение авторизации
В разделе LDAP Rocket.Chat предусмотрены кнопки тестирования подключения и тестового входа — их названия могут отличаться между версиями. Сначала выполните проверку соединения, затем введите логин и пароль тестового пользователя из каталога. Успешный тест означает, что bind проходит и атрибуты считываются.
Только после успешного теста включайте опцию LDAP-аутентификации. Обязательно оставьте работающего локального администратора с известным паролем — иначе при ошибке в конфигурации вы потеряете доступ к панели управления сервером.
Синхронизация пользователей и групп
Авторизация решает только вопрос входа. Чтобы профили заполнялись автоматически, настройте сопоставление атрибутов: какие поля каталога соответствуют имени, email и аватару пользователя в Rocket.Chat. Стандартные соответствия для Active Directory обычно включают displayName для имени и mail для почты, но точные атрибуты зависят от вашей схемы каталога.
Синхронизация групп позволяет автоматически добавлять пользователей в каналы на основе их членства в группах безопасности домена. Эта возможность и глубина её настройки зависят от редакции Rocket.Chat — проверьте, доступна ли она в вашей версии.
- 📧 Email — критичен для уведомлений и восстановления доступа, убедитесь, что атрибут заполнен у всех пользователей
- 👥 Группы — сопоставляйте только те, что реально нужны в мессенджере, иначе получите десятки лишних каналов
- 🔄 Расписание — периодическая фоновая синхронизация снижает нагрузку по сравнению с полной выгрузкой при каждом входе
Почему после входа у пользователя пустое имя?
Чаще всего атрибут имени, указанный в сопоставлении, пуст или отсутствует в записи пользователя каталога. Проверьте запись через ldapsearch: если поле displayName (или аналог) не заполнено, Rocket.Chat возьмёт в качестве имени логин. Заполните атрибут в каталоге и попросите пользователя войти заново — данные обновятся при следующей синхронизации.
Типичные ошибки и их диагностика
Большинство проблем сводится к небольшому набору причин. В таблице собраны частые симптомы и направления проверки.
| Симптом | Возможная причина | Что проверить |
|---|---|---|
| Ошибка подключения к серверу | Недоступность порта или неверный хост | Сетевую связность, файрвол, правильность порта 389/636 |
| Invalid credentials | Неверный DN учётной записи поиска или пароль | Полный DN сервисной учётки, срок действия пароля |
| Пользователь не найден | Неверный Base DN или фильтр поиска | Результат ldapsearch с теми же параметрами |
| Ошибка TLS/сертификата | Самоподписанный сертификат не доверен | Цепочку сертификатов и настройки проверки TLS |
| Вход работает, данные пустые | Неверное сопоставление атрибутов | Заполненность атрибутов в записи пользователя |
Главный инструмент диагностики — логи сервера Rocket.Chat. Включите подробное логирование LDAP в настройках (если такая опция есть в вашей версии) и повторите попытку входа: в журнале будет видно, на каком этапе происходит сбой — подключение, bind, поиск пользователя или чтение атрибутов.
⚠️ Внимание: не отключайте проверку TLS-сертификата в продуктивной среде ради «быстрого решения». Это открывает возможность перехвата паролей домена. Правильный путь — установить корневой сертификат вашего удостоверяющего центра в доверенные на сервере Rocket.Chat.
Безопасность и рекомендации по эксплуатации
Передача паролей домена требует шифрования канала. Используйте LDAPS (порт 636) или StartTLS поверх стандартного порта — открытый LDAP без шифрования отправляет учётные данные в открытом виде, что недопустимо в корпоративной сети.
Сервисной учётной записи выдайте минимально необходимые права — только чтение нужных веток каталога. Заведите для неё пароль без срока истечения или настройте процедуру регулярной смены с обновлением конфигурации Rocket.Chat: истёкший пароль сервисной учётки — классическая причина внезапного отказа авторизации у всех пользователей сразу.
Часто задаваемые вопросы
Можно ли использовать LDAP и локальные учётные записи одновременно?
Да, Rocket.Chat поддерживает смешанный режим: пользователи каталога входят через LDAP, а локальные учётные записи (например, резервный администратор) продолжают работать со своими паролями. Это рекомендуемая схема на случай недоступности контроллера домена.
Что произойдёт с пользователями, если LDAP-сервер недоступен?
Пользователи, у которых нет локального пароля, не смогут войти до восстановления связи с каталогом. Уже открытые сессии обычно продолжают работать до истечения токена. Поэтому локальный администраторский аккаунт должен существовать всегда.
Поддерживает ли Rocket.Chat несколько LDAP-серверов?
Возможность настройки нескольких подключений к каталогам зависит от редакции и версии Rocket.Chat. Если у вас несколько доменов или лесов Active Directory, сверьтесь с документацией вашей версии — в некоторых случаях задачу решают через глобальный каталог или доверительные отношения на стороне AD.
Как удалить пользователя из Rocket.Chat после его увольнения?
Если учётная запись отключена или удалена в каталоге, пользователь потеряет возможность войти. Дополнительно можно настроить деактивацию таких пользователей в Rocket.Chat при синхронизации, если эта опция доступна в вашей версии. История сообщений при этом сохраняется.
Нужен ли LDAPS, если серверы находятся в одной сети?
Шифрование рекомендуется даже внутри периметра: трафик в локальной сети может перехватываться, а пароли домена — критичный актив. Настройка LDAPS или StartTLS требует корректного сертификата на контроллере домена, но существенно повышает безопасность.