Авторизация пользователей LDAP-сервера в MasterSCADA 4D

Начиная с версии 1.3.3 в MasterSCADA 4D поддерживается объединение встроенной системы Безопасности и базы данных служб каталогов Active Directory (AD), развернутых на сервере с ОС Linux и основанных на использовании протокола LDAP.

LDAP (Lightweight Directory Access Protocol) – это открытый и кроссплатформенный протокол, используемый для аутентификации служб каталогов. Для обозначения сервера, на котором хранятся базы каталогов LDAP, используется определение LDAP-сервер.


Пример настроек
LDAP сервера Linux

В примере в качестве AD взяты группы и пользователи FreeIPA сервера.

FreeIPA открытое программное обеспечение, специализированная служба каталогов, предназначенная для создания в ОС Linux среды, позволяющей централизованно управлять аутентификацией пользователей. Функционал FreeIPA подобен Active Directory.

В приведенных далее рисунках показаны созданные администратором пользователи и группы:
Каждый пользователь имеет свои собственные настройки. Например, если перейти к пользователю apetrov, то можно увидеть его полное имя, имя учётной записи, его уникальный идентификатор UID и псевдоним учётной записи:
Это лишь малая часть настроек, являющаяся обязательной для изначального создания пользователя.

Если перейти на вкладку Группы пользователей, можно будет увидеть список групп, к которым принадлежит выбранный пользователь. В данном случае apetrov содержится в группах ipausers (основная группа сервера) и operators (создана администратором):
Группы имеют два обязательных параметра: имя и id:
Если перейти на вкладку Пользователи, можно будет увидеть список пользователей, которые добавлены в выбранную группу. В группу operators добавлен apetrov:

Взаимодействие MasterSCADA 4D и LDAP сервера

Для того, чтобы в клиент визуализации можно было зайти под пользователем LDAP-сервера, нужно настроить следующие свойства элемента Безопасность:

Адрес сервера Active Directory. В данном поле можно задать как DNS, так и IP-адрес сервера. Если значение не задано, то при попытке подключения клиента визуализации в окне авторизации список пользователей отображаться не будет.

Тип сервера Active Directory. Выпадающий список с возможными значениями: Active Directory (служба каталогов, используемая в ОС Windows) и LDAP (службы каталогов, работающие по протоколу LDAP).

Важно! Тип сервера LDAP можно устанавливать только, если используется среда исполнения, расположенная на устройстве с ОС Linux. Среда исполнения на OC Windows поддерживает только тип сервера Active Directory.

Также необходимо создать роли в элементе Безопасность, соответствующие группам LDAP-сервера. В созданные роли можно также добавить и пользователей, которые созданы в MasterSCADA 4D:
B Далее созданным ролям необходимо назначить права доступа. Обязательно настраиваются права доступа Открытие окна и Управление:
После этого в режиме исполнения при подключении клиента визуализации в окне авторизации пользователей можно будет ввести не только имя пользователя созданного в MasterSCADA 4D, но и пользователя LDAP-сервера:
При введении неверных данных аутентификации пользователя будет выведена соответствующая ошибка:
Если LDAP-сервер недоступен, то после попытки авторизации также появится ошибка в клиенте визуализации: При введении неверных данных аутентификации пользователя будет выведена соответствующая ошибка:
Если в панели свойств элемента Безопасность в свойстве Тип сервера Active Directory выбран LDAP для работы проекта в среде исполнения на ОС Windows, то подключение к серверу не устанавливается, выводится ошибка Неправильный тип сервера:
Для получения информации о пользователях LDAP-сервера можно использовать специальный служебный функциональный блок (ФБ) UsersGetADUserGroups.

Для того, чтобы вывести информацию о группе (параметр ФБ groups) и полном имени клиента (параметр ФБ full name) LDAP-сервера нужно указать входные параметры ФБ: server, name, password пользователя:
В случае неуспешной работы функционального блока на выходе будет выдаваться ошибка:

- неправильно введённые данные пользователя сервера:
- LDAP-сервер недоступен:

В панели свойств программы, в которой находится ФБ UsersGetADUserGroups, в категории Задача рекомендуется устанавливать свойство Способ исполнения в состояние По вызову: