Управление пользователями
Сервис хранит информацию о пользователях данных.
Внимание
Хранение данных в версии 3.1
Основной способ хранения данных сервиса Управление пользователями - DatareonDB. Сведения о работе с другими СУБД приведены в разделе Поддержка работы с СУБД MSSQL и PostgreSQL.
Внимание
Особенности при переходе c версии 3.0 на 3.1
При обновлении версии с 3.0 на 3.1 в качестве способа хранения будет использоваться DatareonDB. Для миграции данных используется дополнительный инструмент.
Внимание
Особенности работы в кластере
Обязательным условием для сервиса, работающего с DatareonDB в кластере, содержащем больше одного сервера, является привязка к одному из серверов кластера. В частности, при создании сервис Управление пользователями требуется привязать к одному из серверов и настроить резервирование данных.
Создание сервиса
Чтобы создать сервис:
В ЦН перейдите в раздел Сервисы.
Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.
На вкладке Основные заполните следующие поля:
Название: произвольное название сервиса, необязательно для заполнения.
Имя: уникальное имя сервиса, обязательно для заполнения.
Комментарий: описание сервиса, необязательно для заполнения.
Для создания сервиса выберите вариант Управление пользователями в разделе Настройка сервисов.
Для активации сервиса установите флажок Включен.
Нажмите на кнопку Сохранить изменения.
Нажмите на кнопку Применить конфигурацию.
Примечание
В рамках одного кластера может быть создан только один сервис Управление пользователями.
Управление пользователями
Для управления пользователями данных могут быть использованы следующие инструменты:
методы на C#, которые можно вызывать из алгоритмов/функций. Описание методов в коде приведено в разделе Разработчику.
API узла, контроллер CredentialExternalUsers.
UI (формы типа Управление пользователями).
Хранение данных
Для хранения данных используется DatareonDB. Файлы данных сервиса размещаются следующим образом:
Windows:
путь_к_каталогу_с_данными_Платформы\Platform\Data\DatareonPlatformCredential\идентификатор_Credential
Linux:
путь_к_каталогу_с_данными_Платформы/platform/data/DatareonPlatformCredential/идентификатор_Credential
Файлы с данным будут размещены на всех серверах, указанных при настройке резервирования данных сервиса.
Поддержка работы с СУБД MSSQL и PostgreSQL
Функциональность использования СУБД MSSQL и PostgreSQL для хранения данных сервиса поддерживается, но считается устаревшей. Новая функциональность сервиса, а также устранение ошибок выполняется только для способа хранения с использованием DatareonDB.
Вкладка Параметры с полями настроек подключения к СУБД убрана со страницы сервиса в ЦН, изменение настроек подключения к СУБД возможно в режиме редактирования конфигурации на странице сервиса в ЦН. В будущих релизах работа сервиса с СУБД MSSQL и PostgreSQL будет прекращена.
При работе с СУБД PosgreSQL сервис подключается по имени базы данных в регистре, указанном в настройках. По умолчанию подключение производится по имени базы данных в нижнем регистре. Если сервис подключен к базе данных, имя которой содержит символы верхнего регистра, рекомендуется выключить сервис, переименовать базу данных и включить сервис снова.
Миграция данных из MSSQL и PostgreSQL в DatareonDB
При установке версии 3.1 в качестве хранилища данных выбирается DatareonDB вне зависимости от текущих настроек. Для продолжения работы необходимо выполнить миграцию данных либо указать хранение данных в СУБД MSSQL и PostgreSQL и выполнить миграцию позже.
Миграция данных выполняется с помощью специальной утилиты-конвертера. Архив с утилитой и руководством по использованию доступен для скачивания на портале.
Чтобы переключить сервис на использование DatareonDB, на странице сервиса в ЦН в режиме редактирования конфигурации установите true в значении ключа internalStorage, сохраните изменения и примените конфигурацию.
Аутентификация для пользователей данных
Аутентификация может быть включена:
Во внешних системах Веб-сервис и REST API.
В custom-адаптерах.
В сервисе Веб-интерфейс.
При включении / выключении аутентификации все веб-сервисы перезапускаются, чтобы корректно включить / выключить функцию аутентификации.
Все остальные параметры аутентификации берутся из сервиса управления пользователями. Если сервис управления пользователями отсутствует, включение аутентификации невозможно.
При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации.
Как работает аутентификация:
Клиент вызывает метод для получения токена, передав логин и пароль.
Сервис отправляет запрос в сервис Управление пользователями, который проверяет все данные, и если все ок - записывает данные в таблицу sessions и возвращает сервису готовую сессию. Сервис сохраняет сессии в памяти. Данные о сессии возвращаются клиенту.
Если вы пользуетесь swagger, то полученный токен без кавычек необходимо вставить в поле, которое появляется при нажатии на кнопку Authorize в swagger, дописав перед ним Bearer, и нажать на кнопку Authorize.
Если сервис перезапускается, то при первом запросе от клиента данные о сессии будут заново загружены из сервиса Управление пользователями.
Обновление токена возможно, если эта опция включена в настройках сервиса Управление пользователями. Обновление также возможно через запрос к самому сервису (появляется еще один метод в контроллере аутентификации). Соответственно, если сервис Управление пользователями неактивен, аутентификация невозможна.
Если пользователя блокируют / удаляют, все сессии на сервисах должны прерваться не позднее указанного в настройках Управление пользователями времени (параметр CreditalsLifetime).
Если сервис Управление пользователями отсутствует, включение аутентификации невозможно. При этом Веб-сервис-клиент может использовать базовую и анонимную аутентификацию без помощи сервиса Управление пользователями.
При включенной аутентификации в веб-сервисах в swagger сверху отображается кнопка Authorize и контроллеры с методами для аутентификации. При этом методы (все или некоторые) перестают работать без аутентификации (для веб-обработчиков аутентификация настраивается включением флага Требуется авторизация).
Настройка автоматической блокировки пользователей
Поддерживается возможность настроить условия автоматической блокировки пользователей Credential. А именно блокировка из-за долгого отсутствия успешных аутентификаций со стороны пользователя или из-за большого количества неуспешных попыток аутентификации.
Примечание
Пользователи Администратор и Система не участвуют в проверке и не блокируются автоматически.
Блокировка неактивных пользователей
Сервис поддерживает возможность отслеживания неактивных пользователей и отключения их в дальнейшем.
Если пользователь не использует учетную запись в течение установленного времени, он будет отключен. Данная настройка доступна в конфигурации сервиса с помощью параметров:
- "withoutLoginDays"
- максимальное количество дней без авторизации для пользователя в системе. Если в этом параметре указано значение 0, то проверка по этому признаку не выполняется.
- "userUpdatingProccessTime"
- периодичность выполнения проверки.
Параметр «userUpdatingProccessTime» не является обязательным: по умолчанию процесс очистки срабатывает каждый день в полночь. Если параметр задан, поведение изменяется в соответствии с заданным интервалом. Значение параметра имеет формат 00:00:00 (часы, минуты, секунды).
При выборе пользователей, подлежащих отключению, рассчитывается количество времени между текущим моментом и моментом последнего входа в систему (LastLoginDateTime). Пользователь будет отключен, если это количество больше или равно дням, указанным в withoutLoginDays.
Примечание
Пока не запустится сервер, процесс может завершаться с таймаутом подключения.
Блокировка пользователей при неуспешных попытках входа
Параметр "maxFailedPasswordAttempts"
(максимальное количество попыток входа) используется для контроля попыток ввода аутентификационных данных пользователя. Цифровое значение параметра определяет количество допустимых попыток введения неправильного пароля (при значении 0 параметр выключен). После исчерпания указанных попыток ввода аутентификационных данных пользователь будет заблокирован.
При неуспешной попытке входа в Центр мониторинга счетчик последовательных неудачных попыток входа увеличивается, а в журнал сервиса Управление пользователями будет добавлено предупреждение такого формата:
Настройки пароля пользователя
Конфигурация сервиса управления пользователей позволяет настроить некоторые особенности работы, связанные с паролем пользователя:
задать срок действия пароля;
настроить сложность пароля;
включить контроль повторного использования паролей;
выполнять запрос принудительной смены пароля.
Срок действия пароля
При попытке аутентификации пользователя с помощью пароля с истекшим сроком действия происходит отказ в аутентификации и отображается соответствующая ошибка.
Для включения проверки необходимо указать значение true для параметра "isIndicationPasswordExpirationValidityPeriod"``и указать срок действия (количество дней) в параметре ``"passwordExpirationDateCount"
(поддерживаются значения от 0 до 365).
Сложность пароля
При попытке сохранить пароль, не соответствующий параметрам сложности, происходит отказ в сохранении пароля.
Для настройки параметров сложности используются параметры блока настроек "passwordSettings"
:
"passwordLength"
- минимально допустимое количество символов в пароле. Поддерживаются значения от 4 до 100."needCapitalLetters"
- обязательность наличия букв в верхнем регистре."needSmallLetters"
- обязательность наличия букв в нижнем регистре."needSpecialCharacters"
- обязательность наличия спецсимволов."needNumbers"
- обязательность наличия цифр.
Поддерживается настройка сложности пароля с помощью регулярного выражения. При этом будут игнорироваться все вышеперечисленные параметры сложности.
Для включения проверки соответствия пароля регулярному выражению необходимо указать значение true для параметра "useCustomRegex"
и заполнить регулярное выражение в параметре "passwordRegex"
.
Пример:
"passwordSettings": {
"$type": "DT.ConfigurationRepository.Configuration.ModuleConfiguration.PasswordSettings, DT_ConfigurationRepository",
"checkPassword": true,
"passwordLength": 6,
"needCapitalLetters": false,
"needSmallLetters": false,
"needSpecialCharacters": false,
"needNumbers": false,
"useCustomRegex": true,
"passwordRegex": "^(?=.\*?[A-Z])(?=.\*?[a-z])(?=.\*?[0-9])(?=.\*?[#?!@$%^&\*-]).{8,}$"
},
Контроль повторного использования паролей
Позволяет запретить пользователям сохранять пароль, совпадающий с одним из ранее сохраненных.
Для включения контроля повторного использования паролей необходимо указать числовое значение, отличное от 0, для параметра "numberOfLastBannedUserPasswords"
. При сохранении пароля происходит сравнение нового пароля с паролями сравнительного списка, сформированного из указанного в numberOfLastBannedUserPasswords количества последних успешно сохраненных паролей из очереди хранения.
Если новый пароль отсутствует в сравнительном списке, то такой пароль будет присвоен пользователю, а предыдущий попадает в очередь хранения.
Если же новый пароль присутствует среди ранее сохраненных, то будет отображено сообщение об ошибке формата «Для [имя пользователя] нельзя установить данный пароль».
Запрос принудительной смены пароля
Администратор ЦМ может запросить принудительную смену пароля для пользователя при аутентификации.
Примечание
Параметр доступен только пользователю Администратор и недоступен для других пользователей.
Администратор также может изменить пароль для авторизованного пользователя. Для изменения пароля и / или запроса на смену пароля пользователем Администратору необходимо выбрать пользователя и внести изменения в следующем окне:
Внимание
При смене пароля пользователя Администратором текущая сессия пользователя будет завершена. При попытке аутентификации для пользователя будет отображено всплывающее окно для изменения пароля. Администратор обязан передать временный пароль пользователю для изменения на постоянный.
При установке флажка Требовать смену пароля при следующем входе текущая сессия пользователя будет завершена, при этом пользователь не сможет совершить вход, пока не пройдёт процедуру смены пароля в соответствующем всплывающем окне:
Дополнительные и секретные свойства пользователей
Конфигурация сервиса управления пользователей позволяет добавить пользователям дополнительные и/или секретные свойства. Методы присвоения значений этим свойствам описаны в Библиотеке разработки.
Дополнительные свойства
Дополнительные свойства пользователей добавляются в конфигурации сервиса Управления пользователями в блок additionalFields.
Пример добавляемой конструкции:
"additionalFields": [
{
"$type": "DT.MdmMetadata.BusinessProcesses.Fields.SimpleField, DT_Core",
"type": "String",
"name": "Религия",
"id": "c41bed87-8a55-4c6e-8874-0b6b0f3e389e",
"isArray": false,
"isRequired": false,
"isNullable": false,
"properties": {
"$type": "System.Collections.Generic.Dictionary`2[[System.String,
System.Private.CoreLib],[System.String, System.Private.CoreLib]], System.Private.CoreLib"
}
}
]
Секретные свойства
Секретные свойства пользователей добавляются в конфигурации сервиса Управления пользователями в блок secretFields.
Пример добавляемой конструкции:
"secretFields": [
{
"$type": "DT.MdmMetadata.BusinessProcesses.Fields.SimpleField, DT_Core",
"type": "Decimal",
"decimalOptions": {
"$type": "DT.MdmMetadata.Types.DecimalOptions, DT_TypeBuilder.Entities",
"precision": 10,
"scale": 0,
"autoRound": false
},
"name": "Зарплата",
"id": "768bb0d6-a324-4ec1-9cbd-9a4573a4d6c8",
"isArray": false,
"isRequired": false,
"isNullable": false,
"properties": {
"$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.String, System.Private.CoreLib]], System.Private.CoreLib"
}
}
]
Резервирование данных
Резервирование данных используется для восстановления данных сервиса в случае выхода из строя одного из серверов.
При включении резервирования данных на серверах создаются резервные копии данных, в которые будут реплицироваться сообщения при обмене данными. Количество серверов, на которые будут реплицироваться данные, настраивается параметром 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",
"GuidOfСервер1": [
"GuidOfСервер2 "
],
"GuidOfСервер2 ": [
"GuidOfСервер3"
]
}
},
Где GuidOfСервер1, GuidOfСервер2, GuidOfСервер3 - это идентификаторы серверов в кластере.
Первым стоит сервер, данные которого резервируются (Master), вторым - сервер, на котором производится резервирование (Slave).
Информация о работе резервирования находится в ЦМ на вкладке Основные соответствующего сервера:

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

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