Общая информация
В рамках данной статьи будет рассмотрен подход к реализации интегарции с Active Directory по протоколу LDAP.
Так же будут рассмотрены два основных кейса данной интеграции:
- Загрузка пользователей из Active Directory
- Авторизация пользователя по протоколу LDAP
Работа с LDAP в рамках платформы выполняется с помощью служебных сценариев, и в частности, компонента LDAP-интеграция.
Для синхронизации списка пользователей создается служебный сценарий, который получает список пользователей из AD с определнным фильтром, и создает/обновляет пользователей соответствующего домена платформы. С помощью Задачи (svctask) данный сценарий настраивается на выполнение по расписанию.
Для авторизации пользователя создается сценарий авторизации, который принимает авторизационные данные пользователя, выполняет запрос к AD и возвращает результат авторизации.
Для удобства работы, подготовлены шаблоны этих сценариев:
вставить шаблоны
Загрузка пользователей из AD

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

Получение списка пользователей
Сценарий загрузки пользователей представляет собой обращение к LDAP, получение списка пользователей по определенному фильтру и дальнейшую обработку данных в цикле.
В качестве действия выбирается поиск, а в качестве объекта пользователи домена:
CN=Users,DC=example,DC=com
В шаблоне в качестве примера получаются следующие атрибуты:
| Атрибут | Комментарий |
|---|---|
| objectGUID | Идентификатор пользователя в AD |
| cn | Имя пользователя |
| mobile | Мобильный телефон |
| memberof | Список групп, в которые входит пользователь |
| sAMAccountName | Имя пользователя для логина |
| distinguishedName | Полное имя пользователя |
| userPrincipalName | Имя пользователя с указанием домена (в примере используется как email) |
В строке поиска можно задать дополнительные фильтры.
Полное описание работы компонента LDAP можно найти в курсе по разработке.
После получения данных в компоненте LDAP, происходит обработка резульата в цикле.
Проверка групп пользователя

Для каждого пользователя из списка необходимо проверить, включен ли он в группу пользователей платформы Эра. Для этого используется поиск подстроки в атрибуте memberOf.
Данный этап можно дополнительно кастомизировать и проверять несколько групп, в зависимости от чего в дальнейшем выдавать пользователям различные роли и права.
Поиск пользователя платформы

Перед созданием нового пользователя с помощью интеграции, необходимо осуществить его поиск для предотвращения создания дублей. Поиск выполняется с помощью компонента Операции с типом CRUD в домене, к типу объекта user. Простейший фильтр выглядит следующим образом:
'["equal",["property","login"],["const",'+ [username] +']]'
При необходимости, можно осущетвлять поиск по идентификатору из AD (objectGUID), сохраняя его при создании пользователя.
Создание пользователя платформы
Создание пользователя так же выполняется при помощи компонента "Операция". Настройки те же, однако используется метод "Создать".
Для создания пользователя используется следующий шаблон:
\{
"name": {[username]},
"login": {[username]},
"pwd": "{ [generated_password] }",
"opts": \{
"allow_script_crud": false,
"avatar_info": false,
"comment": {[user_dn]},
"email": {[user_principal_name]},
"info": \{\},
"phonenumber": "",
"pincode": "",
"roles": [
"callcenter_operator",
"callcenter_user",
"crud",
"helpdesk_support",
"meet",
"meet_user",
"monitor",
"selector",
"smart_user",
"tester_observer",
"user",
"vnd_manager",
"vnd_master",
],
"self_registered": false,
"tags": [],
"title": "",
"web_sess_limit": 10
\},
\}
Данный шаблон заполняется параметрами, прочитанными из данных LDAP. С помощью него можно заранее задать необходимые роли пользователю, указать его email, номер телефона и другие данные.
Так же, при создании пользователя ему генерируется внутренний пароль. Данный пароль не будет использоваться для входа, и не сохраняется. Он необходим только для прохождения стандартной проверки при создании пользователя.
На данном этапе часто необходима проектная доработка - возможно создание пользователей с различными правами, в зависимости от данных из AD, возможна реализация обновления прав пользователей при переходе из группы в группу. Список возможных усложнений процесса достаточно обширный, для любых подобных доработок можно использовать существующий шаблон сценария.
Логирование и отладка
На каждом из шагов сценария реализовано логирование промежуточных результатов. Для того что избежать "захламления логов", по умолчанию логируются только исключения, операции по созданию новых пользователей, а так же начало и окончание процесса интеграции.
Для удобства ручной отладки, можно переключить каждый компонент логирования в режим отправки уведомлений пользователю.
Настройка исполнения интеграции по расписанию

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