Управление пользователями
Сервис хранит информацию о пользователях данных.
Внимание
Особенности работы в версии 3.1.0
Основной способ хранения данных сервиса Управление пользователями - DatareonDB. Поддержка работы сервиса с СУБД MSSQL и PosgreSQL сохраняется. Вкладка Параметры с полями настроек подключения к СУБД убрана со страницы сервиса в ЦН, изменение настроек подключения к СУБД возможно в режиме редактирования конфигурации на странице сервиса в ЦН. В версии 3.1.1 планируется прекращение поддержки работы сервиса с СУБД. Для перехода к использованию версии 3.1.1 потребуется размещение данных сервиса в DatareonDB.
Внимание
Особенности работы в версии 3.1.0
Если сервис создан в версии 3.1.0, он будет хранить данные в DatareonDB. Если сервис хранит данные в СУБД (например, если сервис создавался в предыдущих версиях Платформы), после обновления Платформы на версию 3.1.0 возможно переключение на хранение данных в DatareonDB. Во время переключения перенос записей сервиса возможен при помощи специальной утилиты-конвертера. Если не произвести перенос, при переходе на DatareonDB Платформа создаст пустую базу данных. Чтобы переключить сервис на использование DatareonDB, на странице сервиса в ЦН в режиме редактирования конфигурации установите true в значении ключа internalStorage, сохраните изменения и примените конфигурацию. Архив с утилитой и руководством по использованию доступен на портале скачивания.
Внимание
Особенности работы в версии 3.1.0
Обязательным условием для сервиса Управление пользователями, работающего с DatareonDB в кластере, содержащем больше одного сервера, является привязка к одному из серверов кластера. В частности, при создании сервис требуется привязать к одному из серверов.
Внимание
Особенности работы в версии 3.1.0
Сервис Управление пользователями, работающий с DatareonDB в кластере, содержащем больше одного сервера, при отказе сервера, к которому привязан сервис, необходимо привязать к рабочему серверу (предпочтительный вариант, так как привязка будет активирована при любом применении конфигурации), либо использовать кнопку Перенести на другой сервер на странице сервера в ЦМ.
Внимание
Особенности работы в версии 3.1.0
Содержимое хранилища данных сервиса Управление пользователями, работающего с DatareonDB в кластере, содержащем больше одного сервера, при запуске процесса сервиса на одном сервере кластера и последующей привязке к другому серверу, не переносится автоматически. Возможно ручное перемещение файлов DatareonDB сервиса на другой сервер. Для этого требуется остановить сервис, перенести каталог с данными, при необходимости настроить права на каталог и содержимое для пользователя, под которым запущена Платформа, и запустить сервис.
Пути к файлам DatareonDB сервиса:
Windows:
путь_к_каталогу_с_данными_Платформы\Platform\Data\DatareonPlatformCredential\идентификатор_Credential
Linux:
путь_к_каталогу_с_данными_Платформы/platform/data/DatareonPlatformCredential/идентификатор_Credential
Для управления пользователями данных используйте:
методы на C#, которые можно вызывать из алгоритмов/функций. Описание методов в коде приведено в разделе Разработчику.
API узла, контроллер CredentialExternalUsers.
UI (формы типа Управление пользователями).
Чтобы создать сервис:
В ЦН перейдите в раздел Сервисы.
Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.
На вкладке Основные заполните следующие поля:
Название: произвольное название сервиса, необязательно для заполнения.
Имя: уникальное имя сервиса, обязательно для заполнения.
Комментарий: описание сервиса, необязательно для заполнения.
Для создания сервиса выберите вариант Управление пользователями в разделе Настройка сервисов.
Для активации сервиса установите флажок Включен.
После внесения данных нажмите на кнопку Сохранить.
Нажмите на кнопку Применить конфигурацию:
Хранение данных
Для хранения данных используется СУБД MS SQL/PostgreSQL в зависимости от настроек сервиса.
Таблицы:
users - список пользователей. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 11112023-2610-1111-0000-000000001111 (включая пароли и расширенные атрибуты).
passwords - список паролей пользователей.
role_users - список соответствий пользователей и ролей. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 66662023-2610-6666-0000-000000006666.
folders - список папок пользователей. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 22222023-2610-2222-0000-000000002222.
role_folders - список соответствий папок и ролей. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 55552023-2610-5555-0000-000000005555.
sessions - список сессий, открытых пользователями на сервисах. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 77772023-2610-7777-0000-000000007777.
journal - журнал регистрации действий пользователей. Регистрируются только действия, указанные в списке LoggingActions в настройках сервиса. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 33332023-2610-3333-0000-000000003333.
externalUsers - список паролей к внешним системам. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 88882023-2610-8888-0000-000000008888.
DeletedUsers - список удаленных пользователей. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 00002023-2610-1111-0000-000000001111.
metadata - текущая структура таблиц с дополнительными и секретными полями. При значении параметра хранения данных InternalStorage = true данные сохраняются в таблице 44442023-2610-4444-0000-000000004444.
11111111-0000-0000-0000-000000000000 - таблица с дополнительными полями. Дополнительные поля настраиваются в списке additionalFields конфигурации сервиса.
11111112-0000-0000-0000-000000000000 - таблица с секретными полями. Секретные поля настраиваются в списке secretField конфигурации сервиса.
Структура таблиц с дополнительными и секретными полями обновляется аналогично таблицам с типами в банке при apply. Поля могут быть только простого типа и не могут являться массивами.
Две разные таблицы необходимы для предоставления администратору СУБД возможности настраивать разные уровни доступа к этим таблицам. Таким образом исключается возможность открытого доступа к паролям и секретным полям.
В таблице folders при создании базы находится одна корневая папка с ID 11111111-0000-0000-0000-000000000000 и названием Все пользователи. Если у аккаунта пользователя не указан FolderId, то он будет помещен в эту папку. Папка защищена от удаления.
Аутентификация для пользователей данных
Аутентификация может быть включена:
Во внешних системах Веб-сервис и REST API.
В custom-адаптерах.
В сервисе Веб-интерфейс.
При включении / выключении аутентификации все веб-сервисы перезапускаются, чтобы корректно включить / выключить функцию аутентификации.
Все остальные параметры аутентификации берутся из модуля Credential. Если модуль Credential отсутствует, включение аутентификации невозможно.
При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации.
Как работает аутентификация:
Клиент вызывает метод для получения токена, передав логин и пароль.
Сервис отправляет запрос в сервис Управление пользователями, который проверяет все данные, и если все ок - записывает данные в таблицу sessions и возвращает сервису готовую сессию. Сервис сохраняет сессии в памяти. Данные о сессии возвращаются клиенту.
Если вы пользуетесь swagger, то полученный токен без кавычек необходимо вставить в поле, которое появляется при нажатии на кнопку Authorize в swagger, дописав перед ним Bearer, и нажать на кнопку Authorize.
Если сервис перезапускается, то при первом запросе от клиента данные о сессии будут заново загружены из сервиса Управление пользователями.
Обновление токена возможно, если эта опция включена в настройках сервиса Управление пользователями. Обновление также возможно через запрос к самому сервису (появляется еще один метод в контроллере аутентификации). Соответственно, если сервис Управление пользователями неактивен, аутентификация невозможна.
Если пользователя блокируют / удаляют, все сессии на сервисах должны прерваться не позднее указанного в настройках Управление пользователями времени (параметр CreditalsLifetime).
Если сервис Управление пользователями отсутствует, включение аутентификации невозможно. При этом Веб-сервис-клиент может использовать базовую и анонимную аутентификацию без помощи сервиса Управление пользователями.
При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации (для веб-обработчиков аутентификация настраивается включением флага Требуется авторизация).
Резервирование данных
Резервирование данных используется для восстановления данных сервиса в случае выхода из строя одного из серверов.
Принцип работы
При включении модуля резервирования данных на серверах создаются резервные копии данных, в которые будут реплицироваться сообщения при обмене данными. Количество серверов, на которые будут реплицироваться данные, настраивается параметром faultTolerance. Резервные данные могут быть созданы на любом из включенных в состав кластера сервере, при этом такой сервер продолжает выполнять назначенные ему функции работы с мастер-данными.
При выходе из строя одного из серверов, указанных в настройках конфигурации кластера, копии данных будут переданы в обработку Платформой.
Настройка
Включение и настройка модуля резервирования данных осуществляется в конфигурации кластера:
Параметры для модуля резервирования данных находятся в поле hotRecoverySettingsGlobal.
Пример конфигурации
"hotRecoverySettingsGlobal": {
"$type": "DT.HotRecovery.CredentialHotRecoverySettings, DT_Core",
"faultTolerance": 1,
"nodes": {
"$type": "System.Collections.Generic.Dictionary`2[[System.Guid, System.Private.CoreLib],[System.Collections.Generic.List`1[[System.Guid, System.Private.CoreLib]], System.Private.CoreLib]], System.Private.CoreLib",
"сервер1": [
"сервер2 "
],
"сервер2 ": [
"сервер3 "
]
}
},
Где сервер1,*сервер2*,*сервер3* - это идентификаторы серверов в кластере.
Первым стоит сервер, данные которого резервируются (Master), вторым - сервер, на котором производится резервирование (Slave).
Информация о работе модуля резервирования находится в ЦМ на вкладке Основные соответствующего сервера:
Мониторинг
В разделе ЦМ DebugCoveyor на вкладке Основные отображаются текущие параметры работы сервиса.
Состояние: текущее состояние сервиса.
Системная информация: текущая системная информация о сервисе.
Подключение к хранилищу: информация о хранилище данных сервиса (при использовании внутреннего хранилища отображается значение Datareon), данные об используемом каталоге и текущем состоянии хранилища).
Очереди: информация о текущих очередях сообщений сервиса.