Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Синхронизация и авторизация с LDAP

Материал из Платформа Эра. Документации

Общая информация

В рамках данной статьи будет рассмотрен подход к реализации интегарции с Active Directory по протоколу LDAP.

Так же будут рассмотрены два основных кейса данной интеграции:

  • Загрузка пользователей из Active Directory
  • Авторизация пользователя по протоколу LDAP

Работа с LDAP в рамках платформы выполняется с помощью служебных сценариев, и в частности, компонента LDAP-интеграция.

Для синхронизации списка пользователей создается служебный сценарий, который получает список пользователей из AD с определнным фильтром, и создает/обновляет пользователей соответствующего домена платформы. С помощью Задачи (svctask) данный сценарий настраивается на выполнение по расписанию.

Для авторизации пользователя создается сценарий авторизации, который принимает авторизационные данные пользователя, выполняет запрос к AD и возвращает результат авторизации.

Для удобства работы, подготовлены шаблоны этих сценариев:

вставить шаблоны

Загрузка пользователей из AD

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

Получение списка пользователей по LDAP

Получение списка пользователей

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

Логирование и отладка

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

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