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

Материал актуален при синхронизации с 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. если сопоставление полей указано, из них берётся информация. Если поле пустое, синхронизации не произойдёт.

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

Bitrix24

Перевод (RU) /

ID Перевода для функции GetMessage

AD

LDAP

Особенности

ACTIVE

Пользователь активен /

LDAP_FIELD_ACTIVE

UserAccountControl&2

UserAccountControl&2


EMAIL

E-Mail /

LDAP_FIELD_EMAIIL

mail

email


NAME

Имя /

LDAP_FIELD_NAME

givenName

cn


LAST_NAME

Фамилия /

LDAP_FIELD_LAST_NAME

sn

sn


SECOND_NAME

Отчество /

LDAP_FIELD_SECOND_NAME




PERSONAL_GENDER

Пол /

LDAP_FIELD_GENDER



только M или F

PERSONAL_BIRTHDAY

Дата рождения /

LDAP_FIELD_BIRTHDAY



формат дня рождения 01.01.1997 (день.месяц.год)

PERSONAL_PROFESSION

Специальность /

LDAP_FIELD_PROF




PERSONAL_PHOTO

Фотография /

LDAP_FIELD_PHOTO

thumbnailPhoto

jpegPhoto

Не более 100 килобайт вес изображения

PERSONAL_WWW

WWW-страница /

LDAP_FIELD_WWW

wWWHomePage



PERSONAL_ICQ

ICQ (перевода нет)




PERSONAL_PHONE

Телефон /

LDAP_FIELD_PHONE

homePhone



PERSONAL_FAX

Факс /

LDAP_FIELD_FAX




PERSONAL_MOBILE

Мобильный /

LDAP_FIELD_MOB

mobile



PERSONAL_PAGER

Пейджер /

LDAP_FIELD_PAGER




PERSONAL_STREET

Улица, дом /

LDAP_FIELD_STREET

streetAddress



PERSONAL_MAILBOX

Почтовый ящик /

LDAP_FIELD_MAILBOX

postOfficeBox



PERSONAL_CITY

Город /

LDAP_FIELD_CITY

l



PERSONAL_STATE

Область / край /

LDAP_FIELD_STATE

st



PERSONAL_ZIP

Почтовый индекс /

LDAP_FIELD_ZIP

postalCode



PERSONAL_COUNTRY

Страна /

LDAP_FIELD_COUNTRY

c



WORK_COMPANY

Наименование компании /

LDAP_FIELD_COMPANY

company



WORK_DEPARTMENT

Департамент / Отдел /

LDAP_FIELD_DEP

department



WORK_POSITION

Должность /

LDAP_FIELD_POS

title



WORK_PHONE

Телефон /

LDAP_FIELD_WORK_PHONE

telephoneNumber



WORK_FAX

Факс /

LDAP_FIELD_WORK_FAX

facsimileTelephoneNumber



WORK_PAGER

Пейджер /

LDAP_FIELD_WORK_PAGER




ADMIN_NOTES

Заметки администратора /

LDAP_FIELD_ADMIN_NOTES

description




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

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

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

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

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

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

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

Внедрение Битрикс24
Выбрать файл
Доступно: doc, rtf, pdf, txt, docx.