Настройка LDAP в Rocket.Chat: полное руководство

Ошибка 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-авторизации

Выполнено: 0 / 5
# Пример проверки каталога с сервера 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-аутентификации. Обязательно оставьте работающего локального администратора с известным паролем — иначе при ошибке в конфигурации вы потеряете доступ к панели управления сервером.

📊 Какой LDAP-каталог вы подключаете к Rocket.Chat?
Active Directory
OpenLDAP
FreeIPA
Другой / ещё выбираем

Синхронизация пользователей и групп

Авторизация решает только вопрос входа. Чтобы профили заполнялись автоматически, настройте сопоставление атрибутов: какие поля каталога соответствуют имени, 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 требует корректного сертификата на контроллере домена, но существенно повышает безопасность.