Управление пользователями

Сервис хранит информацию о пользователях данных.

Внимание

Особенности работы в версии 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 (формы типа Управление пользователями).

Чтобы создать сервис:

  1. В ЦН перейдите в раздел Сервисы.

  2. Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.

  3. На вкладке Основные заполните следующие поля:

    • Название: произвольное название сервиса, необязательно для заполнения.

    • Имя: уникальное имя сервиса, обязательно для заполнения.

    • Комментарий: описание сервиса, необязательно для заполнения.

  4. Для создания сервиса выберите вариант Управление пользователями в разделе Настройка сервисов.

  5. Для активации сервиса установите флажок Включен.

  6. После внесения данных нажмите на кнопку Сохранить.

  7. Нажмите на кнопку Применить конфигурацию:

    ../../_images/config_apply3.png

Хранение данных

Для хранения данных используется СУБД 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, то он будет помещен в эту папку. Папка защищена от удаления.

Аутентификация для пользователей данных

Аутентификация может быть включена:

При включении / выключении аутентификации все веб-сервисы перезапускаются, чтобы корректно включить / выключить функцию аутентификации.

Все остальные параметры аутентификации берутся из модуля Credential. Если модуль Credential отсутствует, включение аутентификации невозможно.

При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации.

Как работает аутентификация:

  1. Клиент вызывает метод для получения токена, передав логин и пароль.

  2. Сервис отправляет запрос в сервис Управление пользователями, который проверяет все данные, и если все ок - записывает данные в таблицу sessions и возвращает сервису готовую сессию. Сервис сохраняет сессии в памяти. Данные о сессии возвращаются клиенту.

    • Если вы пользуетесь swagger, то полученный токен без кавычек необходимо вставить в поле, которое появляется при нажатии на кнопку Authorize в swagger, дописав перед ним Bearer, и нажать на кнопку Authorize.

    • Если сервис перезапускается, то при первом запросе от клиента данные о сессии будут заново загружены из сервиса Управление пользователями.

    • Обновление токена возможно, если эта опция включена в настройках сервиса Управление пользователями. Обновление также возможно через запрос к самому сервису (появляется еще один метод в контроллере аутентификации). Соответственно, если сервис Управление пользователями неактивен, аутентификация невозможна.

    • Если пользователя блокируют / удаляют, все сессии на сервисах должны прерваться не позднее указанного в настройках Управление пользователями времени (параметр CreditalsLifetime).

Если сервис Управление пользователями отсутствует, включение аутентификации невозможно. При этом Веб-сервис-клиент может использовать базовую и анонимную аутентификацию без помощи сервиса Управление пользователями.

При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации (для веб-обработчиков аутентификация настраивается включением флага Требуется авторизация).

Аутентификация во внешних сервисах

Вы можете использовать дополнительные идентификационные данные для аутентификации во внешних сервисах и системах (например, при использовании прокси-сервера для подключения к внешнему веб-сервису).

Все действия выполняются в swagger узла в разделе CredentialExternalUsers.

Для использования внешних пользователей:

  1. Создайте нового пользователя.

  2. Установите пароль для пользователя.

  3. В конфигурации сервиса разрешите использование сервиса Управление пользователями.

    "account": {
                            "$type": "DT.ClusterConfiguration.Account, DT_Core",
                            "userName": "user01",
                            "passwordNew": "111",
                            "useCredential": true
                    },
    

Резервирование данных

Резервирование данных используется для восстановления данных сервиса в случае выхода из строя одного из серверов.

Принцип работы

При включении модуля резервирования данных на серверах создаются резервные копии данных, в которые будут реплицироваться сообщения при обмене данными. Количество серверов, на которые будут реплицироваться данные, настраивается параметром faultTolerance. Резервные данные могут быть созданы на любом из включенных в состав кластера сервере, при этом такой сервер продолжает выполнять назначенные ему функции работы с мастер-данными.

При выходе из строя одного из серверов, указанных в настройках конфигурации кластера, копии данных будут переданы в обработку Платформой.

Настройка

Включение и настройка модуля резервирования данных осуществляется в конфигурации кластера:

../../_images/hot_recovery1.png

Параметры для модуля резервирования данных находятся в поле 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).

Информация о работе модуля резервирования находится в ЦМ на вкладке Основные соответствующего сервера:

../../_images/cred_recovery_mon.png

Мониторинг

В разделе ЦМ DebugCoveyor на вкладке Основные отображаются текущие параметры работы сервиса.

../../_images/cred_mon.png
  • Состояние: текущее состояние сервиса.

  • Системная информация: текущая системная информация о сервисе.

  • Подключение к хранилищу: информация о хранилище данных сервиса (при использовании внутреннего хранилища отображается значение Datareon), данные об используемом каталоге и текущем состоянии хранилища).

  • Очереди: информация о текущих очередях сообщений сервиса.