Синхронизация Bitrix24 с Active Directory. Проблемы и решения

Заказчик
Крупная производственная компания. Есть настроенная Active Directory со списком пользователей.
Задача
Перенести настройки пользователей на корпоративный портал Битрикс и настроить синхронизацию. Чтобы синхронизировалась информация из пользовательских полей и при деактивации пользователя в Active Directory он деактивировался в Bitrix24.

Материал актуален при синхронизации с LDAP не только Битрикс24, но проектов на Битрикс:Управление сайтом.

Статья большая, начнем с вывода. Недавно в одном из проектов появилась задача по синхронизации корпоративного портала с Bitrix24. Инструменты есть, но просто не будет. “Из коробки” почти ничего не получилось, потребовались “танцы с бубном”. Статья — о методах решения проблем такой интеграции.

Заказчик — крупная производственная компания. Есть настроенная Active Directory со списком пользователей. 
Задача — перенести настройки пользователей на корпоративный портал Битрикс и настроить синхронизацию. Чтобы синхронизировалась информация из пользовательских полей и при деактивации пользователя в Active Directory он деактивировался в Bitrix24.

У Bitrix24 имеется стандартный модуль для выполнения данной задачи, “AD/LDAP интеграция”. 
Перед началом синхронизации этот модуль надо установить или обновить.

Есть возможность настроить периодическую синхронизацию. Базовая настройка даёт возможность выставить периодичность только в часах. Мы поставили синхронизацию каждый час. Разумно после настройки портала увеличить это время до 24 часов, данные в Active Directory обычно изменяются редко.

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

У модуля есть функционал переноса структуры компании, что тоже возможно и настраивается в административной панели в настройках сервера. Данное решение индивидуальное для каждой компании. Если структура компании в Active Directory некорректная или имеет свои особенности, то имеет смысл не переносить структуру. В нашем случае заказчиком принято решение не использовать текущую структуру компании из AD и разграничить структуру в AD и Bitrix24. На наш взгляд это не совсем правильное решение, так как при таком решении изменения структуры необходимо вносить в двух местах.

 

Внимание! Bitrix24 считает данные из Active Directory приоритетными. Если данные в полях различаются, то значение поля из Bitrix24 заменяется значением из поля Active Directory.

Проблемы интеграции Битрикс24 и Active Directory

Проблема 1. Конфликт фильтров Настройка полей -> Фильтр для пользователей и Группы -> Отмеченные ниже группы не участвуют в импорте пользователей. 

Конфликтуют эти два параметра:

Настройка полей -> Фильтр для пользователей:

Группы -> Отмеченные ниже группы не участвуют в импорте пользователей:


Если указать настройки в обоих полях, происходит конфликт и пользователи не импортируются.

Решение: Использовать только фильтр для пользователей.

В поле фильтр для пользователей прописали рабочий фильтр из Active Directory и всё заработало. (&(&(objectClass=user)(objectCategory=PERSON))(memberof=CN=BitrixCorpUser,CN=Builtin,DC=mwlight,DC=loc))

Проблема 2. Проблема синхронизации времени сервера Active Directory и времени портала.

При создании сервера, в настройках не присваивалось время и импортированные пользователи оставались неактивными без ручной активации. В списке пользователей отсутствует дата синхронизации. Без ручной правки у этих пользователей нет прав и они не могут ни войти в портал, ни синхронизироваться. Это связано с настройками сервера. 

Решение:

Изменить значение MySQL параметра explicit_defaults_for_timestamp на Off.

Выполнить проверку сайта. 

Проблема 3. Конфликт двух копий одного и того же пользователя.

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

Решение: Сделать основным пользователя, импортированного из Active Directory, переназначить на него текущие задачи, а копию уволить.

Корректная синхронизация получилась только из верхней папки Active Directory, вложенные игнорировались.

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

Решение: Перенесли всех пользователей в одну папку и из неё выполнили синхронизацию. Так как мы не стали переносить структуру компании, это единственно возможное решение.

Проблема 4. Cинхронизация копии Имени и Фамилии на другом языке.

Компания международная и основные имя и фамилия на английском языке.

Решение: Добавили дополнительные Имя (RU) и Фамилия (RU) и синхронизировали их с помощью атрибутов ExtensionAttribute1 и ExtensionAttribute2. Не рекомендуется использовать для решения данной задачи стандартные поля Bitrix24, потому что они используются в самых неожиданных местах. Например нельзя в качестве русскоязычных ФИО использовать отчество, при синхронизации с iPhone пользователь на iPhone стал Иванов Иванов Иван Иванович Иван.

Проблема 5. Cинхронизация поля Фотография с удобной для просмотра фотографией.

Решение: Проблема в  базовых ограничениях расширения изображения не более 95 х 95 пикселей и размер не более 100 килобайт. Добавили В Active Directory дополнительное поле jpegPhoto отдельным расширением базовых функций. Размер также ограничен 100 килобайтами, но разрешение изображения можно установить любое, которое уложится в размер. Правильное расширение jpg, это обеспечит максимальное сжатие, а для Active Directory размер фотографий критичен. Не рекомендуется загружать фотографии с расширением более 300 х 300 пикселей так как в Bitrix24 ограничение на выводе фотографий из профиля 300 х 300 пикселей и фотографии с большим расширением будут избыточные.

Справка: Соответствие полей пользователя и атрибутов LDAP.

Для разработчиков и администраторов расскажем подробности.

Используется метод $arSyncFields.

В поля Битрикса подставляется следующая информация:

"EMAIL" => Array("NAME" => GetMessage("LDAP_FIELD_EMAIIL"), "AD"=>"mail", "LDAP"=>"email"),

на входе массив, где первый параметр обязательный это перевод названия поля, вызываемый функцией GetMessage, второй параметр необязательный  это название поля из AD, третий параметр необязательный это название поле из LDAP. если сопоставление полей указано, из них берётся информация. Если поле пустое, синхронизации не произойдёт.

Таблица соответствия полей

Выводы по интеграции данных Active Directory и Битрикс

Текущий функционал синхронизации требует доработки. Коробочная версия Bitrix24 содержит ряд ошибок и странностей и не позволяет корректно произвести синхронизацию “с наскока”.

Документация недостаточна, что приводит к постоянным проблемам, настройку многих параметров (Фильтр для пользователей, Соответствие полей пользователя и атрибутов LDAP, Фильтр для групп пользователей, Корень дерева (base DN)) приходится производить "методом тыка".

Тем не менее, это очень полезный инструмент для больших компаний. Значительно упрощает настройку и поддержку корпоративного портала.

Корректная работа базового функционала синхронизации модуля обеспечена только при установке на новый корпоративный портал. При установке на уже существующий портал, возникнет масса сложностей, обойти которые можно, но проблематично. 
ИНТЕРВОЛГА рекомендует использовать синхронизацию при установке новых порталов.

По итогам работ по синхронизации все работы выполнены, заказчик доволен. Создано два обращения под номерами 33386 и 92746 к разработчикам Bitrix24, на основании которых в будущем будет улучшен функционал синхронизации LDAP и Bitrix24.

Если вам требуется настройка синхронизации Bitrix24 и Active Directory, наша компания будет рада помочь в решении этого вопроса.

В карточку агентства

Письмо автору кейса

Пользуйтесь реальным опытом в IT и следите за успехами потенциальных подрядчиков и конкурентов
Подпишитесь на рассылку
Читайте также
Кейсы по теме#Программирование
Проекты компании Proactivity Group