Установка TESSA для серверов Windows¶
Для установки платформы TESSA выполните по порядку последующие пункты данного руководства.
Tip
По завершении установки для production-сервера мы рекомендуем обратиться к разделу Настройка production сервера для повышения безопасности и противодействия атакам.
Предварительные настройки¶
На сервере приложений должны быть установлены (или включены в компонентах):
-
IIS (роль Веб-сервер) и его дополнительные компоненты:
-
Компонент
Проверка подлинности Windows
-
EN: “Internet Information Services\World Wide Web Services\Security\Windows Authentication”
-
RU: “Службы IIS\Службы Интернета\Безопасность\Проверка подлинности Windows”
-
-
Компонент
Консоль управления IIS
-
EN: “Internet Information Services\Web Management Tools\IIS Management Console”
-
RU: “Службы IIS\Средства управления веб-сайтом\Консоль управления IIS”
-
-
Настройка протокола https: создать или указать необходимый сертификат и добавить серверные привязки (bindings)
-
-
После включения компонентов установите
.NET Runtime & Windows Server Hosting bundle
(см. ниже)
Для установки компонентов IIS перейдите Панель управления\Программы\Программы и компоненты
, нажмите Включение или отключение компонентов Windows.
В открывшемся окне найдите группу Службы IIS
В ветке Службы интернета/Безопасность включите Проверка подлинности Windows.
В консоли IIS
(Internet Information Services Manager) необходимо настроить поддержку протокола HTTPS. В корневом каталоге выберите пункт Сертификаты сервера.
Открыв его, в правом верхнем углу нажмите Создать самозаверенный сертификат….
В появившемся окне введите понятное имя сертификата, например, server_name, и нажмите ОК.
Далее выберите узел сайта в дереве, обычно это Default Web Site. В правом меню выберите пункт Привязки.
В открывшемся окне, если нет пункта с типом https, нажмите Добавить.
Заполните настройки привязки: Тип – https, Сертификаты SSL – укажите созданный выше сертификат, в примере он имеет имя https.
Установите .NET Runtime & Windows Server Hosting bundle
-
Установка описана в документации на сайте Microsoft:
-
Перейдите на страницу загрузки. В разделе Runtime 5.0.x найдите последнюю доступную версию (обычно сверху), скачайте и установите
Runtime & Hosting Bundle
для Windows по ссылке “Hosting Bundle” (на картинке ниже).Important
На странице со списком версий не выбирайте preview-версию.
Important
Устанавливайте .NET Hosting bundle ТОЛЬКО после установки и настройки IIS. Исправление описано в разделе Возможных проблем.
При установке потребуется подключение к интернету.
-
Далее требуется перезапустить сервер или в консоли, запущенной от имени Администратора, выполнить две команды:
net stop was /y
, а затемnet start w3svc
.
-
Создание учётной записи для работы пула приложений и системных сервисов¶
Веб-сервисы (пул приложений) и системный сервис должны выполняться от выделенной учетной записи.
При наличии домена (Active Directory) рекомендуется создать учетную запись в домене. Типичное название учетной записи tessa
, права в домене по умолчанию.
При отсутствии домена необходимо создать такую учетную запись локально на сервере приложений. Необходимо учитывать, что при отсутствии домена Windows аутентификация не будет работать, за исключением локальных учётных записей на сервере приложений, что может быть полезно только для локальных инсталляций системы у разработчиков.
Созданную учетную запись необходимо включить в группу IIS_IUSRS
на сервере приложений, а также рекомендуется дать права администратора на данном сервере. При отсутствии такой возможности необходимо дать права пользователя и как минимум доступ на чтение папки и вложенных подпапок в C:\inetpub\wwwroot\tessa
(см. далее настройку сервера приложений). В зависимости от конфигурации сервера могут потребоваться дополнительные права. Рекомендуется в таком случае выполнять первичную установку с правами администратора, которые затем ограничить.
Установка и конфигурирование сервера приложений и веб-сервисов системы¶
Note
Здесь и далее физически пути к файлам и директориям внутри сборки будут даваться относительно верхней директории сборки. Если вы распаковали архив со сборкой в папку C:\Tessa\Build3.0
, то указание директории Applications\SchemeEditor
означает директорию C:\Tessa\Build3.0\Applications\SchemeEditor
.
-
В
Диспетчер служб IIS
создать новый пул приложений вIIS
. Назовите его*tessa
и настройте его на работу Без управляемого кода* и на работу от учетной записи “tessa”.Для настройки учетной записи необходимо выбрать созданный в предыдущем пункте пул приложений и нажать Дополнительные параметры…:
В открывшемся окне в поле Удостоверение нажать на кнопку с изображением трех точек:
Выбрать Особая учетная запись, нажав на кнопку Установить… откроется окно, где необходимо указать учетную запись (в формате
имя домена\имя учетной записи и пароль
):Также нужно установить Максимальное число рабочих процессов равным числу физических ядер сервера. Это очень рекомендуется делать на системах, для которых ожидается высокая нагрузка.
-
Убедитесь, что веб-сайт
Default Web Site
запущен (щелкаем правой кнопкой на сайте, далееУправление веб-сайтом->Начало
). -
Создайте папку
C:\inetpub\wwwroot\tessa
. -
Скопируйте в нее из папки сборки
Services
всё содержимое, т.е. подпапкуweb
, файлыapp.json
,localization.json
, а также файл лицензии с расширением.jlic
или.tlic
. -
Далее в диспетчере IIS вы увидите
Default Web Site
и вложенную в него папкуtessa\web
. Папку необходимо преобразовать в приложение через контекстное меню и указать в настройках пул приложенийtessa
: -
На уровне корневой папки
tessa
в разделеПараметры SSL
включите флажок Требовать SSL,сертификаты клиента
: игнорировать. -
Затем на уровне приложения
web
в разделеПроверка подлинности
включите Анонимная проверка подлинности и Проверка подлинности Windows, а все остальные отключите.
Генерация нового токена безопасности веб-сервиса системы¶
После установки и конфигурации веб-сервиса, для него нужно сгенерировать и установить новую подпись токена безопасности. Для генерации новой подписи токена нужно использовать команды консольной утилиты tadmin GetKey / SetKey
(в сборке в папке Tools
или linux/tools
), которые упрощают процесс смены подписи.
Warning
Рекомендуется изменять подпись токена безопасности сразу после установки и далее каждый месяц (по умолчанию в начале каждого месяца пользователю Admin на почту приходит письмо-напоминание по смене токена). Также убедитесь, что доступ к конфигурационному файлу app.json
имеет только администратор сервера.
Note
Подпись токена безопасности используется для подписания и проверки информации по сессиям пользователя и по правам доступа к карточкам и другим объектам системы. Если злоумышленнику окажется известна подпись, установленная на сервере, то он сможет предоставить себе любые права до момента, когда подпись будет изменена.
Note
Токен безопасности генерируется и устанавливается автоматически если конфигурация устанавливается с использованием Setup.bat (или обновляется с использованием Update.bat). В этом случае, генерацию токена можно пропустить.
Если сервис установлен на Windows и расположен в папке C:\inetpub\wwwroot
, то запустите командную строку от имени администратора. Если сервис в папке, не требующей административный доступ, то запустите командную строку от пользователя, имеющего доступ к папке веб-сервиса. Перейдите в папку с консольной утилитой tadmin
:
cd /D "C:\Tessa\tessa-3.6.0\Tools"
Теперь запустите команду GetKey
, которая генерирует новую подпись, и направьте результат в команду SetKey
, указав ей папку базовую папку для сервисов. Например:
tadmin GetKey Signature|tadmin SetKey Signature "/path:C:\inetpub\wwwroot\tessa"
tadmin GetKey Cipher|tadmin SetKey Cipher "/path:C:\inetpub\wwwroot\tessa"
В результате будет отображено сообщение об успешной замене токена:
Replacing key Signature in: C:\inetpub\wwwroot\tessa
New value: X/RVy4P8m7SN1+lwGC9tfB+xxfb5w43Z2GqpM7yiZnixznqB5OExystLNpYtSNeMkC3PgmubFtwB/KI/M+oh2A==
Key Signature has been replaced in files (1): "C:\inetpub\wwwroot\tessa\app.json"
Replacing key Cipher in: C:\inetpub\wwwroot\tessa
New value: qaX7tIKu9DQqey09X7HzG3Q4krZtB4Om2izNYnC3PF4=
Key Cipher has been replaced in files (1): "C:\inetpub\wwwroot\tessa\app.json"
Note
Если будет выведена ошибка доступа к файлу, то проверьте права доступа к папке для пользователя, от имени которого была запущена командная строка.
Tip
Введите команду tadmin GetKey Signature
, чтобы сгенерировать новую подпись токена и вывести её на экран. Её можно будет скопировать и заменить вручную.
Теперь перезапустите пул приложений. Если вы запускали командную строку от имени администратора, то перезапустить пул вы можете следующей командой, где в параметре /apppool.name:
указывается имя перезапускаемого пула приложений:
"%windir%\system32\inetsrv\appcmd.exe" recycle apppool /apppool.name:tessa
Настройка конфигурационного файла¶
Далее необходимо настроить параметры конфигурационного файла веб-сервиса. Конфигурационные файл называются app.json
, app-*.json
и applocal-*.json
, они находятся в папке: c:\inetpub\wwwroot\tessa\
.
Note
При написании файлов app.json
, app-*.json
и applocal-*.json
необходимо учитывать следующие особенности. Должен выполняться эскейпинг символа обратного слэша, т.е. пишем \\
вместо одного \
, это часть стандарта JSON. В начале любого из значений можно написать символ @
, это вставит путь к папке с текущим файлом app.json
(или app-*.json
, applocal-*.json
) и обратным слэшом. Например, файл лежит в папке c:\inetpub\wwwroot\tessa
и есть настройка с путём к файлу лицензии @Syntellect.jlic
, то после обработки файла значение будет равно c:\inetpub\wwwroot\tessa\Syntellect.jlic
. Это применимо к любым настройкам в app.json
, но не является частью стандарта JSON и не будет работать для других .json
-файлов. Для того, чтобы в начале значения действительно вставить символ @
вместо пути, то его надо написать дважды @@
.
В файле необходимо настроить следующие параметры (выделено #желтым
#):
-
Параметр:
Строка подключения.
Для подключения к SQL Server с использованием Windows аутентификации:
“ConnectionStrings”: { “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=true; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;” }
Для подключения с использованием пользователя SQL Server:
“ConnectionStrings”: { “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;” }
Для подключения с использованием пользователя SQL Server и указанием номера порта (1433 - номера порта по умолчанию для протокола TCP/IP):
“ConnectionStrings”: { “default”: “Server=.\SQLEXPRESS,1433; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;” }
Для подключения с использованием пользователя PostgreSQL:
“ConnectionStrings”: { “default”: [ “Host=localhost; Database=tessa; Integrated Security=false; User ID=postgres; Password=Master1234; Pooling=true; MaxPoolSize=100”, “Npgsql” ] }
Строка подключения к базе данных Tessa в формате Sql Server Connection string/PostgreSQL connection strings.
Не забывайте, что подключение к MS SQL Server в случае использования Windows аутентификации (Integrated Security=true) будет происходить от учетной записи, от которой запущен пул приложений, обычно это
domain\tessa
, которой надо дать соответствующие права в настройках MS SQL Server (dbowner
на базуtessa
). Для MS SQL Server схемой по умолчанию для учетной записи должна бытьdbo
. -
Параметр:
"ServerCode": "tessa"
Код сервера. Для разных инсталляций Tessa указывайте разные коды приложений, например, “prod” или “qa”. Код сервера используется для формирования ссылок tessa:// для desktop-клиента, при этом код сервера в Tessa Applications и на сервере должны совпадать. Также код сервера используется для разделения глобального кэша метаинформации между процессами, поэтому при использовании на сервере приложения нескольких экземпляров системы, укажите для каждого из них отличающийся код сервера. Подробнее по установке второго сервиса на одном сервере приложений см. в разделе Установка второго экземпляра Tessa на этом же сервере приложений.
-
Параметр:
"LicenseFile": "@*.?lic"
Ссылка на присланный вам файл лицензии. По умолчанию используется файл с расширением
.jlic
или.tlic
в папке рядом с конфигурационным файлом, поэтому достаточно скопировать файл лицензии в эту папку на сервере. Если файл лицензии должен лежать в другой папке, то путь к нему вы можете записать в этом параметре. Если файл лежит рядом с файломapp.json
, то перед именем файла необходимо поставить@
. -
Параметр:
Ключ для подписи токена безопасности.
"SignatureKey": "b2AeHjUWpuqCKf9cGWQogBqKTdUm/F WVNkcB/VdZD62r01q5vY3S4Cp4C378Au1obKPgqQH/onMLiefuFKiSKQ=="
Base64 представление ключа шифрования, используемого для подписи маркера безопасности. Ключ шифрования может быть произвольным набором байт. Рекомендуется использовать секретный ключ длиной 64 байта. Рекомендуется изменять значение посредством приложения tadmin (описано в разделе Генерация нового токена безопасности веб-сервиса системы).
-
Параметр:
"LimitMaxThreads": true
Признак того, что максимальное число потоков для каждой параллельной операции, такой как конвертация файла, ограничивается до безопасного значения. Указание “true” (рекомендуется) резервирует одно ядро при таких операциях, обеспечивая стабильное время реакции на другие запросы, пока выполняется длительная параллельная операция.
-
Параметр:
"HealthCheckIsEnabled": true
Признак того, что доступна проверка здоровья веб-сервиса по адресу
/check
(например, https://localhost/tessa/web/check)..) При переходе по такому адресу выводится подробная информация по серверу (включая операционную систему и версию .NET), а также выполняется ряд проверок для сервисов карточек и представлений без аутентификации пользователя. Для production-установки рекомендуется указатьfalse
для повышения безопасности. Независимо от значения, указанного для этой настройки, по адресу/hcheck
возможна быстрая проверка работоспособности веб-сервиса, в т.ч. возможность принимать HTTP-запросы и наличие соединения с базой данных, при этом возвращается только состояние “здоров/не здоров”, что не влияет на безопасность. -
Параметр:
"SwaggerDocIsEnabled": true
Признак того, что доступна автоматическая документация по всем доступным HTTP-методам (в т.ч. REST) по адресу
/swagger
(например, https://localhost/tessa/web/swagger)..) Для production-установки рекомендуется указатьfalse
для повышения безопасности. -
Параметр:
"ViewAccessCacheTimeSpan": "0.01:00:00"
Максимальный интервал времени, в течение которого кэш прав доступа для каждого сотрудника может хранится в памяти перед тем, как будет автоматически сброшен в текущем процессе. По умолчанию указан 1 час. Кэш прав доступа не используется для администраторов, поскольку для них доступны все представления, независимо от прав.
-
Параметр:
"RoleTimeoutTimeSpan": "0.00:30:00"
Таймаут длительных SQL-запросов, связанных с ролями, таких как пересчёт замещений, динамических ролей и метаролей. По умолчанию указано 30 минут.
-
Параметр:
"SessionExpirationTimeSpan": "7.00:00:00"
Максимальный срок жизни сессии. Desktop-клиенты (TessaClient, TessaAdmin, TessaAppManager) пересоздают сессию, когда срок её жизни подходит к концу, тогда как для web-клиента срок определяет, сколько времени может использоваться токен сессии в cookies перед тем, как пользователю будет отображено окно логина. По умолчанию указано 7 дней.
-
Параметр:
"Redis": ""
Строка подключения к серверу Redis, в простом случае - адрес сервера, который будет использован для синхронизации серверных кэшей, что актуально при установке в кластере. Укажите пустую строку, если сервер Redis не используется. В качестве допустимых адресов возможно указать “localhost”, IP-адрес или DNS-имя сервера Redis, и опционально номер порта после двоеточия: “127.0.0.1:6379” (6379 - порт по умолчанию). Все возможные настройки в строке подключения перечислены в документации, причём мы рекомендуем указать логин/пароль и защищённое подключение по SSL/TLS или отдельно ограничить доступ к серверу Redis по сети (различные настройки перечисляются через запятую): https://stackexchange.github.io/StackExchange.Redis/Configuration.html
#configuration
-options -
Параметр:
"ProbingPath": "extensions"
Относительный путь к папке, внутри которой будет выполнен поиск сборок .dll в дополнение к основной папке веб-сервиса. Может быть указано несколько папок через точку с запятой.
-
Параметр:
"ServerDependencies": "Tessa.Server.TessaServerDependencies, Tessa.Server"
Полное имя типа с указанием имени сборки, который реализует интерфейс ITessaServerDependencies для определения дополнительных зависимостей для использования в расширениях. Оставьте значение по умолчанию, кроме случаев, когда вы реализуете собственный класс, реализующий указанный интерфейс.
-
Параметр:
"WebControllers": [ "extensions/Tessa.Extensions.Server.Web.dll" ]
Список библиотек, в которых выполняется поиск дополнительных контроллеров для подключения в веб-приложение Tessa, в т.ч. для добавления REST-методов. Библиотеки перечисляются в кавычках через запятую. Помимо имени файла библиотеки может быть указан путь относительно папки с веб-сервисом.
-
Параметр:
"WebRazorReferences": [ "extensions" ]
Список библиотек или папок с библиотеками, которые добавляются в компилируемые страницы
.cshtml
. Укажите папку"extensions"
, чтобы добавлять ссылки на расширения в таких страницах. Папки или файлы перечисляются в кавычках через запятую. Путь рассчитывается относительно папки с веб-сервисом (аналогично настройкеWebControllers
), и также может быть указан полный путь. -
Параметр:
"Configuration.Sealed": false
Режим неизменяемой конфигурации. Это включает в себя изменения рабочих мест, представлений, схемы данных, типов карточек/файлов/диалогов/заданий, любые изменения в карточках настроек, а также редактирование любых скриптов C# и SQL (см. ниже в разделе по параметру
Configuration.StrictSecurity
).Рекомендуется установить для production-конфигурации. В процессе обновления конфигурации необходимо обязательно отключить такую настройку в конфигурационном файле сервере и перезапустить веб-сервисы.
Обратитесь к разделу Настройка production сервера за описанием этой и других настроек, актуальных для production-инсталляции.
-
Параметр:
"Configuration.StrictSecurity": false
Режим повышенной безопасности, отключающий просмотр структуры карточек и некоторые административные возможности, в т.ч. административный импорт из TessaClient и изменение C# и SQL-скриптов.
При установленном значении
true
запрещаются следующие действия:- Редактирование любых скриптов C# и SQL, в т.ч. содержащихся в маршрутах, бизнес-процессах, динамических и контекстных ролях, генераторах метаролей, в типах условий, в шаблонах файлов, в виртуальных файлах и в уведомлениях.
- Просмотр структуры карточек в web-клиенте и в TessaClient от любых учётных записей.
- Импорт карточек из приложения TessaClient. При этом сохраняется возможность импорта из приложений
TessaAdmin
иtadmin
(если импортируемые карточки не содержат скрипты).
Рекомендуется установить для production-конфигурации, в которой необходимо ограничить возможности администраторов системы. В процессе обновления конфигурации необходимо обязательно отключить такую настройку в конфигурационном файле сервере и перезапустить веб-сервисы.
Обратитесь к разделу Настройка production сервера за описанием этой и других настроек, актуальных для production-инсталляции.
-
Параметр:
"PathBase": ""
Указывается базовый путь до веб-приложения, если оно не запущено под IIS. Например, если путь до веб-сервиса был установлен как “https://localhost/tessa/web”, то укажите в этой настройке значение “/tessa/web”.
-
Параметр:
"GuyFawkesAuth": "tessa/web"
Указывается путь до веб-приложения в IIS для аутентификации в web-клиенте. Настройка не влияет на desktop-клиент. Например, если веб-сервис с именем “web” расположен внутри папки “tessa”, то укажите в этой настройке значение “tessa/web”. Также укажите настройку
"WinAuthIsEnabled"
, равнуюtrue
. -
Параметр:
"WinAuthIsEnabled": true, "WinAuth": "tessa/tw_winauth"
Указывается путь до отдельного веб-приложения в IIS с включённой Windows аутентификацией и отключённой анонимной аутентификацией для использования в web-клиенте. Настройка не влияет на desktop-клиент. Информация по настройке Windows аутентификации в web-клиенте доступна в разделе Настройка Windows аутентификации.
-
Параметр:
"PreviewPdfEnabled": true
Признак того, что в web-клиенте используется предпросмотр PDF (или конвертируемых в PDF форматов, таких как doc, docx, tiff и др.) в области предпросмотра файлов в карточках. Если указано true, то при запуске приложения в кэш браузера на клиенте загружается код компонента по предпросмотру PDF.
Значение false может использоваться для экономии трафика при первом запуске на слабых каналах, в таком случае компонент не будет загружен на клиент, но предпросмотр файлов PDF (и конвертируемых в PDF форматов) будет недоступен для всех пользователей web-клиента (файлы можно будет посмотреть по кнопке “Скачать”).
Рекомендуется оставить значение по умолчанию true, если явно не выявлено, что такая экономия трафика заметно влияет на скорость открытия web-клиента, при этом предпросмотр файлов в PDF не требуется.
-
Параметр:
"CryptoProPluginEnabled": false
Признак того, что в web-клиенте используется плагин браузера КриптоПро для подписания файлов ЭП (электронной подписью) в web-клиенте. Настройка не влияет на desktop-клиент. Информация по настройке ЭП в web-клиенте доступна в разделе ЭП - электронная подпись.
-
Параметр:
"ServiceWorkerEnabled": true
Признак того, что в web-клиенте используется Service Worker. Функциональность Service Worker заметно уменьшает количество трафика, загружаемого с сервера в момент открытия страницы web-клиента. Настройка не влияет на desktop-клиент.
-
Параметр:
"AlwaysOpenLinksInSingleBrowserTab": true
Признак того, что в web-клиенте используется алгоритм определения предыдущей открытой вкладки с приложением ТЕССА и возможностью перехода к этому приложению. Также должен быть включен параметр ServiceWorkerEnabled. Работает только для десктопных браузеров.
-
Параметр:
"WinAutoLogin": true
Автоматически выполнять вход в систему если доступна Windows аутентификация.
-
Параметр:
"ExtensionTracingMode": "Off"
Режим трассировки серверных расширений для API карточек. Оставьте значение “Off” до тех пор, пока не потребуется определить время выполнения расширений или их порядок, причём включать настройку можно только на тестовом контуре (не на production). Информация по доступным режимам трассировки указана в руководстве разработчика.
-
Параметр:
"CheckPlatformVersion": true
Признак того, что приложения desktop-клиента TessaClient и TessaAdmin при запуске должны проверять точное совпадение версии платформы со своей версией. Это предотвращает возможные ошибки настройки, например, если при обновлении платформы забыли опубликовать новые версии приложений. Настройка не влияет на приложение Tessa Applications, утилиту tadmin и на web-клиент. Рекомендуется оставить значение по умолчанию true.
-
Параметр:
"UserWallpaperName": "Wallpaper"
Имя файла с фоновым изображением без указания расширения, который прикладывается как файл к карточке сотрудника при установке фона в web-клиенте. Настройка не влияет на desktop-клиент.
-
Параметр:
"WallpaperSizeKb": 600
Максимальный размер файла с фоновым изображением в Кб, который пользователь может загрузить на сервер при установке фона в web-клиенте. Настройка не влияет на desktop-клиент.
-
Параметр:
"MultipartBodyLengthLimit": 2147483648
Максимальный размер файла, который может быть приложен к карточке в web-клиенте. По умолчанию 2 Гб. При задании значения больше указанного возможны проблемы, связанные с конфигурацией браузеров. Настройка не влияет на desktop-клиент. Рекомендуется не изменять эту настройку, и использовать ограничение на размер файла, указываемое в карточке настроек “Настройки сервера”.
-
Параметр:
"EnableInterprocessCache": true
Признак того, что на сервере используется кэш для хранения метаинформации, который синхронно очищается для каждого из рабочих процессов.
Если вы используете один рабочий процесс (один процесс пула приложений или один процесс-демон на Linux), то вы можете указать false для незначительного прироста производительности в процессе изменения метаинформации (т.е. при изменениях через конструкторы в приложении TessaAdmin или через карточки настроек, виды документов и некоторые другие системные карточки).
Если присутствует несколько рабочих процессов, но вы уверены, что администраторы не будут менять метаинформацию без перезапуска сервисов, в частности, при использовании кластера приложений (где кэш не сможет обновить себя сразу на всех нодах), вы можете установить значение false для получения более заметного эффекта на производительность при изменении метаинформации (но не при нормальной работе в системе).
Во всех остальных случаях рекомендуется оставить значение true.
-
Параметр:
"CookiesSameSite": "Strict"
Настройка cookies, создаваемых при логине, для разрешения или запрета их отправки при выполнении cross site запросов.
Возможные значения:
Strict
(по умолчанию) - разрешена передача cookies только в пределах того же сайта (доменного имени, схемы и порта), cookies не будут переданы для любых cross site запросов. Используйте эту настройку всегда для противодействия CSRF атакам, кроме случаев, когда со стороны браузера реализована логика cross site запросов к веб-сервису TESSA.Lax
- браузер может передавать cookie либо в пределах того же сайта, либо при навигации cross site верхнего уровня.None
- браузер может передавать cookie для запросов, поступающих с любых сайтов.Unspecified
- используются настройки браузера для определения того, разрешена ли передача cookies для запросов. Это не значение по умолчанию, его надо явно указать вместо “Strict”.
-
Параметр:
"AllowedRefererValues": [ ]
Допустимые значения HTTP-заголовка
Referer
, которые проверяются на каждый запрос, или пустой массив (по умолчанию), если проверки отключены.При проверке актуальное значение заголовка должно начинаться с подстроки, указанной в этом списке, без учёта регистра. Проверка не выполняется, если клиент не прислал HTTP-заголовок. Используйте эту настройку для противодействия CSRF-атакам.
Например, возможно перечислить все допустимые доменные имена с указанием схемы подключения вида:
"https://tessa.server-name.org"
Несколько строк перечисляются в массиве через запятую:
[ "https://tessa.server.com", "https://tessa.internal-server.com:52313/integration" ]
-
Параметр:
"ResponseHeaders": { "X-Frame-Options": "sameorigin", "X-XSS-Protection": "1; mode=block" }
Значения заголовков, передаваемых в каждый ответ на запрос. По умолчанию указаны заголовки
X-Frame-Options
иX-XSS-Protection
, это улучшает противодействие некоторым видам атак.
Параметры подключения к LDAP¶
В конфигурационном файле app.json
в группе "LDAP"
содержатся настройки для подключения к службам каталогов LDAP, таким как Active Directory, Novell Directory Services, OpenDC, ApacheDC и др. Службы LDAP могут использоваться при входе в систему для проверки логина/пароля. Установите следующие параметры, если потребуется обеспечить вход для сотрудников с типом входа “Пользователь LDAP”.
-
Параметр:
"Enabled": false
Признак того, что подключение к LDAP по указанным настройкам разрешено. Установите
true
, если используете аутентификацию в LDAP. -
Параметр:
"UseSsl": true
Признак того, что используется защищённое подключение по протоколу SSL.
-
Параметр:
"Url": "localhost"
Имя сервера LDAP или его URL-адрес, который используется сервером приложений для подключения.
-
Параметр:
"Port": null
Порт, по которому выполняется подключение (номер порта указывается без кавычек). Если значение равно
null
,0
или отрицательное число, то используется порт по умолчанию в зависимости от настройкиUseSsl
: если"UseSsl": true
, то порт636
; если"UseSsl": false
, то порт389
. -
Параметр:
"TimeoutMilliseconds": null
Таймаут подключения в миллисекундах (значение указывается без кавычек). Если значение равно
null
,0
или отрицательное число, то используется таймаут по умолчанию в зависимости от сервера LDAP (обычно около5
секунд). -
Параметр:
"BindDn": "uid=admin,ou=system"
Имя пользователя (DN), от которого выполняется подключение к службам LDAP для поиска сотрудника с его последующей аутентификацией. Значение зависит от используемого сервера LDAP и от его настроек. Укажите любую учётную запись с известным паролем, которая может выполнять поиск записей в дереве домена.
-
Параметр:
"BindCredentials": "secret_password"
Пароль пользователя
BindDn
, от которого выполняется подключение к службам LDAP для поиска сотрудника с его последующей аутентификацией. -
Параметр:
"SearchBase": "dc=example,dc=com"
Адрес корневого узла (группы), в которой выполняется поиск сотрудника для входа с обходом всех вложенных групп.
-
Параметр:
"SearchFilter": "(&(objectClass=person)(cn={0}))"
Строка с фильтром, используемая для поиска сотрудника. Вместо
{0}
в строку подставляется поле “Аккаунт” из карточки сотрудника, оно же - введённый пользователем логин (без учёта регистра символов). В значении по умолчанию выполняется поиск всех сотрудников с классом “person” и значением “Common Name” (он же “cn”), равным искомому логину.Вместо “cn” можно выполнять поиск по другим атрибутам, а также проверять принадлежность нескольким классам:
(&(objectClass=user)(objectClass=person)(TessaLogin={0}))
Для подключения к Active Directory обычно используют строку следующего вида (причём имя учётной записи для логина используется без указания домена, т.е. “User” вместо “DOMAIN\User”):
(&(objectCategory=person)(objectClass=user)(sAMAccountName={0}))
Пример настройки для сервера LDAP:
"LDAP": {
"Enabled": true,
"UseSsl": false,
"Url": "ipa.test.com",
"Port": null,
"TimeoutMilliseconds": null,
"BindDn": "uid=user,cn=sysaccounts,cn=etc,dc=ipa,dc=test,dc=com",
"BindCredentials": "Master1234",
"SearchBase": "cn=users,cn=accounts,dc=ipa,dc=test,dc=com",
"SearchFilter": "(&(objectClass=person)(uid={0}))"
},
Пример настройки для сервера Active Directory:
"LDAP": {
"Enabled": true,
"UseSsl": false,
"Url": "server.domain.local",
"Port": null,
"TimeoutMilliseconds": null,
"BindDn": "DC\\User",
"BindCredentials": "Master1234",
"SearchBase": "dc=domain,dc=local",
"SearchFilter": "(&(objectClass=person)(sAMAccountName={0}))"
},
Настройки веб-сервера Kestrel в группе WebServer¶
В конфигурационном файле app.json
в группе "WebServer"
содержатся настройки веб-сервера Kestrel, которые можно установить для того, чтобы настроить поведение в качестве edge-сервера.
Warning
Настройки в этом разделе неприменимы при установке веб-сервисов TESSA совместно с IIS, Nginx, Apache или с другим веб-сервером, перенаправляющим запросы к веб-сервисам TESSA.
-
Параметр:
"HttpsRedirect": "Enabled"
Режим перенаправления запросов по протоколу HTTP на другой порт по протоколу HTTPS. Неактуален, если отсутствует прослушивание адресов по протоколу HTTPS.
Значения:
-
Disabled
- отключено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS. Если веб-сервер TESSA прослушивает не только локальный адрес (localhost или 127.0.0.1), но и адреса, доступные по сети, то указывайте эту настройку только в том случае, если нет ни одного адреса, прослушиваемого по протоколу HTTP. В противном случае это даёт доступ к системе по протоколу HTTP без шифрования, в результате чего по сети будут передаваться токены сессий, пароли, данные карточек и представлений, содержимое файлов и другая конфиденциальная информация в открытом виде. -
Enabled
- включено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS. Это значение по умолчанию. -
Hsts
- включено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS с отправкой клиенту дополнительных заголовков по стандарту HSTS. Указывайте его только при разворачивании в production-окружении, потому что при его использовании браузер на рабочем месте пользователя запомнит текущий порт HTTPS на количество дней, указанное в настройкеHstsMaxAgeDays
(по умолчанию 365 дней), и будет самостоятельно выполнять перенаправление по этому порту вместо того, чтобы выполнять запрос HTTP и получать информацию по redirect в ответе на запрос.
Если указано несколько прослушиваемых адресов HTTPS, то укажите порт HTTPS в настройке
HttpsRedirectPort
. Если в ней указано значениеnull
, то при наличии единственного прослушиваемого адреса HTTPS будет использован его порт, а при наличии нескольких портов - перенаправление запросов будет отключено, что открывает доступ к серверу по протоколу HTTP без шифрования. -
-
Параметр:
"HttpsRedirectPort": null
Номер порта, по которому выполняется перенаправление запросов с протокола HTTP на протокол HTTPS. Настройка используется только в том случае, если в настройке
HttpsRedirect
указано значениеEnabled
илиHsts
, и выполняется прослушивание хотя бы одного адреса по протоколу HTTPS.Рекомендуется указать значение
null
, если для протокола HTTPS выполняется прослушивание единственного адреса. Укажите номер порта без кавычек, например,443
, если для протокола HTTPS выполняется прослушивание более, чем одного адреса, в противном случае перенаправление запросов с протокола HTTP не будет выполняться. -
Параметр:
"HstsMaxAgeDays": 365
Количество дней, на которые браузер будет запоминать, что к серверу обращение выполняется по HTTPS (заголовок
Strict-Transport-Security
, атрибутmax-age
).Актуально только при указании режима
"HttpsRedirect"
, равного"Hsts"
. -
Параметр:
"CertificateFile": "@*.cer"
Путь к файлу с сертификатом, который будет использован при прослушивании адресов по протоколу HTTPS. Если таких адресов нет, то файл игнорируется. Может быть указана маска, например,
{empty}*.cer
, в этом случае используется первый подходящий файл, найденный в папке по алфавиту. Укажите символ@
перед строкой с именем файла, чтобы выполнять поиск в папке с файломapp.json
, в противном случае поиск выполняется в папке с исполняемым файломTessa.Web.Server
(аналогично указанию файла с лицензией@*.?lic
).Поддерживаются файлы сертификатов
.cer
с бинарным кодированием (DER) или с base64-кодированием, файлы.crt
и.pem
(PEM),.p7c
(PKCS7), а также файлы.pfx
(PKCS12).Если указан файл в формате PEM (расширения
.crt
и.pem
), то для такого сертификата приватный ключ может быть отдельным файлом. В таком случае, укажите путь до этого файла в настройкеCertificateKeyFile
. Если сертификат зашифрован паролем, укажите его в настройкеCertificatePassword
.Если указан файл в формате PKCS12 (расширение
.pfx
), то такой файл хранит закрытый ключ сертификата и требует пароля. Укажите пароль этого сертификата в настройкеCertificatePassword
.Если файл сертификата не найден, то будет выполняться поиск в хранилище сертификатов в соответствии с настройками
CertificateStoreName
иCertificateStoreLocation
. Если указанные настройки не заполнены, то веб-сервер не будет выполнять прослушивание по адресам с заданным протоколом HTTPS, при этом для каждого такого адреса в консоли и в файле лога отображается предупреждение. Если при этом веб-сервер прослушивал только адреса HTTPS (не прослушивал адреса HTTP и Unix-сокеты), то при запуске веб-сервер завершает свою работу с ошибкойKestrel has no endpoints to listen to. Check https certificate availability.
-
Параметр:
"CertificateKeyFile": ""
Путь к файлу с приватным ключом сертификата, который будет использован при прослушивании адресов по протоколу HTTPS. Если файл сертификата не найден, то настройка игнорируется. Возможно указание относительного пути с маской, как и для настройки
CertificateFile
.Параметр используется для сертификатов в формате PEM (расширения
.crt
и.pem
). -
Параметр:
"CertificatePassword": ""
Пароль к файлу сертификата. Если указано
null
или пустая строка""
, то файл сертификата открывается без пароля. Файлы в формате PKCS12 (расширение.pfx
) всегда должны иметь пароль. Если сертификат имеет пароль, но он не указан, то веб-сервер при запуске завершит свою работу с ошибкой.Если файл сертификата не найден, то настройка игнорируется.
-
Параметр:
"CertificateStoreName": "My"
Имя хранилища сертификатов в соотвествии с перечислением
StoreName
, которое описано в MSDNДопустимые значения (соответствуют папкам в консоли сертификатов
mmc
):-
AddressBook
- сертификаты других пользователей. -
AuthRoot
- сертификаты третьих сторон. -
CertificateAuthority
- сертификаты промежуточных сторон. -
Disallowed
- отозванные сертификаты. -
My
- личные сертификаты. -
Root
- корневые сертификаты. -
TrustedPeople
- сертификаты доверенных лиц. -
TrustedPublisher
- сертификаты доверенных издателей.
Значение проверяется без учёта регистра.
На Windows выполняется поиск в хранилище сертификатов, на Linux - в соответствии с переменными окружения OpenSSL (
SSL_CERT_DIR
иSSL_CERT_FILE
), а также в папке~/.dotnet/corefx/x509stores
.Настройка игнорируется, если был найден файл сертификата, указанный в настройке
CertificateFile
.Если хотя бы одна из настроек
CertificateStoreName
иCertificateStoreSubject
не указана (null
или пустая строка""
), то поиск в хранилище сертификатов не выполняется. -
-
Параметр:
"CertificateStoreLocation": "CurrentUser"
Местоположение хранилища сертификатов в соотвествии с перечислением
StoreLocation
, которое описано в MSDNДопустимые значения:
-
CurrentUser
- текущий пользователь. -
LocalMachine
- текущий компьютер.
Значение проверяется без учёта регистра.
На Windows выполняется поиск в хранилище сертификатов, на Linux - в соответствии с переменными окружения OpenSSL (
SSL_CERT_DIR
иSSL_CERT_FILE
), а также в папке~/.dotnet/corefx/x509stores
.Настройка игнорируется, если был найден файл сертификата, указанный в настройке
CertificateFile
.Если хотя бы одна из настроек
CertificateStoreName
иCertificateStoreSubject
не указана (null
или пустая строка""
), то поиск в хранилище сертификатов не выполняется. -
-
Параметр:
"CertificateStoreSubject": "localhost"
Значение поля
Subject
в сертификате, который загружается из хранилища сертификатов. Например, значение"localhost"
соответствует сертификату, у которого в полеSubject
указаноCN=localhost
.Если хотя бы одна из настроек
CertificateStoreName
иCertificateStoreSubject
не указана (null
или пустая строка""
), то поиск в хранилище сертификатов не выполняется, и эта настройка игнорируется.Если несколько подходящих сертификатов доступны в пределах тех же настроек
CertificateStoreName
иCertificateStoreLocation
, то возвращается первый найденный, который отмечен как валидный (доверенный). Если валидных сертификатов нет, то выполняется поиск по невалидным (обычно это сертификаты, созданные для разработки или тестирования).Если указано значение
null
или пустая строка""
, то возвращается первый доступный сертификат в хранилище, независимо от его валидности. Рекомендуется указывать такое значение только в целях разработки и локального тестирования, или на сервере Linux, в котором в хранилище есть единственный сертификат. -
Параметр:
"Http2Disabled": false
Признак того, что поддержка протокола HTTP/2 отключена. Протокол может использоваться браузерами для ускорения загрузки контента. Протокол не используется в desktop-приложениях.
Возможные значения:
-
false
- взаимодействие с клиентами выполняется по протоколу HTTP 1.1 или по протоколу HTTP/2 в зависимости от того, какой протокол поддерживается клиентом. -
true
- протокол HTTP/2 не поддерживается сервером, взаимодействие с клиентами выполняется только по протоколу HTTP 1.1.
Note
Эта настройка функционирует не только при запуске веб-приложения TESSA в качестве edge сервера, но также при запуске в связке с Nginx, Apache или другим сервером, для которого веб-приложение TESSA работает в режиме reverse proxy. Настройка неактуальна для запуска на Windows совместно с IIS, поскольку в этом случае в режиме in-process hosting запросы обрабатывает только IIS, но не Kestrel.
Warning
При запуске на ОС Windows, в зависимости от версии серверной ОС, браузеры с поддержкой HTTP/2 (Яндекс.Браузер, Chrome, Firefox, Safari) могут выдавать ошибку с кодом
ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY
при подключении к веб-серверу по HTTPS. Если вы обнаружили такую ошибку, то установите обновления серверной ОС. Если ошибка не исчезла, то укажите настройку`"Http2Disabled": true
, в этом случае браузеры будут использовать протокол HTTP 1.1. -
-
Параметр:
"EnforceTls12": false
Признак того, что поддержка протокола TLS 1.1 отключена. Протокол TLS 1.0 отключён всегда. В этом случае поддерживаются только протоколы TLS 1.2 и TLS 1.3. Протоколы используются для организации защищённого соединения по HTTPS, и не используются при соединении по HTTP или по Unix-сокетам.
Возможные значения:
-
false
- разрешены любые версии протокола TLS, начиная с 1.1, а именно: TLS 1.1, TLS 1.2, TLS 1.3. -
true
- разрешены версии протокола TLS 1.2 и TLS 1.3. Версии TLS 1.0 и TLS 1.1 запрещены. Если клиент не поддерживает протоколы TLS 1.2 или TLS 1.3, то соединение с ним не будет установлено, пользователю будет отображена ошибка подключения по HTTPS.
Операционные системы Windows 7, 8 (но не 8.1), Server 2008 R2, Server 2012 по умолчанию поддерживают только протокол TLS 1.1. Для того, чтобы браузеры или desktop-клиенты, запущенные в этих версиях ОС, могли использовать TLS 1.2, необходимо установить специальное обновление Windows, после чего создать ключ реестра
...Protocols\TLS 1.2\Client\DisabledByDefault
, подробная информация доступна на сайте тех. поддержки Microsoft.Tip
Протоколы TLS 1.0 и TLS 1.1 официально признаны устаревшими. Все браузеры и сайты должны поддерживать как минимум протокол TLS 1.2. Если в инфраструктуре организации, где работает TESSA, могут оставаться устаревшие версии браузеров или устаревшие ОС, то не устанавливайте значение
true
.Note
Протокол SSLv3 не используется в TESSA, независимо от этой настройки, поскольку он признан небезопасным.
Note
Версия TLS 1.3 на момент написания этого материала поддерживается только при установке на сервере Linux. Браузер на компьютере пользователя также должен работать на Linux. При этом на клиенте и на сервере должна быть установлена библиотека OpenSSL версии 1.1.0 или старше, и её, в свою очередь, должен поддерживать дистрибутив Linux (библиотека должна быть в репозиториях дистрибутива). Если одно из этих условий не удовлетворяется, то используется протокол TLS 1.2, который на текущий момент признан безопасным и рекомендуемым.
-
-
Параметр:
"DataProtectionKeysPath": ""
Путь для сохранения ключей “Data Protection”, используемых сервером Kestrel.
При указании
null
или пустой строки""
по умолчанию используется папка внутри профиля%LocalAppData%
. Если веб-сервер запущен под системной учётной записью (например,ApplicationPoolIdentity
наIIS
,www-data
наNginx
), то в значении параметра необходимо явно указать путь к папке на диске, где будут храниться ключи, иначе сессии пользователей при использовании аутентификации SAML не будут сохраняться после перезапуска сервера.При запуске в контейнере Docker укажите путь к папке, которая включена в volume Docker, чтобы содержимое папки сохранялось между запусками приложения.
Подробнее этот механизм описан в MSDN: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-5.0
-
Параметр:
"DataProtectionCertificateFile": ""
Имя файла сертификата для шифрования сохраняемых ключей “Data Protection”, используемых сервером Kestrel. Возможно указание относительного пути с маской, как и для настройки
CertificateFile
.Если указаны
null
или файл сертификата не найден, то ключи шифруются средствами текущей учётной записи (на Windows) или не шифруются (на Linux, не рекомендуется).Настройка игнорируется, если не указан путь
DataProtectionKeysPath
. -
Параметр:
"DataProtectionCertificateKeyFile": ""
Путь к файлу с приватным ключом сертификата, который будет использован для шифрования сохраняемых ключей “Data Protection”, используемых сервером Kestrel. Если файл сертификата не найден, то настройка игнорируется. Возможно указание относительного пути с маской, как и для настройки
DataProtectionCertificateFile
.Параметр используется для сертификатов в формате PEM (расширения
.crt
и.pem
). -
Параметр:
"DataProtectionCertificatePassword": ""
Пароль для файла сертификата
DataProtectionCertificateFile
для шифрования сохраняемых ключей “Data Protection”, используемых сервером Kestrel.Если указаны
null
или пустая строка, то пароль не требуется или сертификат не загружается из файла.Настройка игнорируется, если не указан путь
DataProtectionKeysPath
или не найден файл сертификатаDataProtectionCertificateFile
.
Настройка ограничений и таймаутов в группе WebServerLimits¶
В конфигурационном файле app.json
в группе "WebServerLimits"
содержатся настройки с таймаутами, ограничениями по максимальному размеру HTTP-запросов/ответов, и другие ограничения, применяемые к веб-сервису Tessa.
Не изменяйте настройки по умолчанию, если явно не выявлена проблема, которая исправляется изменением одного из ограничений. Ниже приведены настройки и их описание.
Изменение настроек из таблицы изменяет соответствующую настройку веб-сервера Kestrel, на базе которого построен веб-сервис Tessa. Для описания таких настроек Kestrel обратитесь к документации MSDN.
Warning
Настройки в этом разделе неприменимы при установке TESSA на Windows в связке с веб-сервером IIS. В этом случае будут использоваться исключительно настройки IIS, для TESSA не поднимается отдельный сервис Kestrel.
-
Параметр:
"MaxResponseBufferSizeBytes": 65536
Максимальный размер буфера в байтах для ответа на запрос перед тем, как начинается отправка по сети. По умолчанию 64 КиБ (65 536 байт). Укажите null, чтобы не ограничивать размер буфера. Укажите 0, чтобы не использовать буферизацию перед отправкой.
-
Параметр:
"MaxRequestBufferSizeBytes": 1048576
Максимальный размер буфера в байтах для запроса. По умолчанию 1 МиБ (1 048 576 байт). Укажите null, чтобы не ограничивать размер буфера.
-
Параметр:
"MaxRequestLineSizeBytes": 8192
Максимальный размер строки запроса HTTP. По умолчанию 8 КиБ (8 192 байт).
-
Параметр:
"MaxRequestHeadersTotalSizeBytes": 32768
Максимальный совокупный размер заголовков в HTTP запросе. По умолчанию 32 КиБ (32 768 байт).
-
Параметр:
"MaxRequestHeaderCount": 100
Максимальное количество заголовков в HTTP запросе. По умолчанию 100 заголовков.
-
Параметр:
"MaxRequestBodySizeBytes": 30000000
Максимальный размер в байтах для тела HTTP запроса. По умолчанию 28.6 МиБ (30 000 000 байт). Ограничено отключено для методов с потоковой передачей (такой как сохранение карточки с файлами или импорт библиотек локализации), а также для методов контроллеров, реализованных в рамках проекта, в которых задан атрибут
DisableRequestSizeLimit
. -
Параметр:
"KeepAliveTimeoutSeconds": 120
Таймаут в секундах на поддержание соединения (т.н. keep alive). По умолчанию 120 секунд.
-
Параметр:
"RequestHeadersTimeoutSeconds": 30
Максимальное время в секундах, в течение которого сервер ожидает получения HTTP заголовков. По умолчанию 30 секунд.
-
Параметр:../../adm/admin/
"MaxConcurrentConnections": null
Максимальное количество одновременно открытых соединений. Укажите null, чтобы не ограничивать количество соединений. По умолчанию указано null.
-
Параметр:
"MaxConcurrentUpgradedConnections": null
Максимальное количество одновременно открытых соединений, которые были обновлены для использования другого протокола (например, на WebSockets). Укажите null, чтобы не ограничивать количество соединений. По умолчанию указано null.
-
Параметр:
"MinRequestBodyDataRateBytesPerSecond": 240.0
Средняя скорость передачи, измеряемая в байтах в секунду, в течение интервала времени
MinRequestBodyDataRateGraceSeconds
, которая минимально допустима для получения данных HTTP запроса от клиента. По умолчанию 240 байт в секунду. -
Параметр:
"MinRequestBodyDataRateGraceSeconds": 5
Интервал времени в секундах, для которого измеряется средняя скорость получения данных HTTP запроса от клиента
MinRequestBodyDataRateBytesPerSecond
. По умолчанию 5 секунд. -
Параметр:
"MinResponseDataRateBytesPerSecond": 240.0
Средняя скорость передачи, измеряемая в байтах в секунду, в течение интервала времени
MinResponseDataRateGraceSeconds
, которая минимально допустима для отправки данных HTTP ответа. По умолчанию 240 байт в секунду. -
Параметр:
"MinResponseDataRateGraceSeconds": 5
Интервал времени в секундах, для которого измеряется средняя скорость отправки данных HTTP ответа
MinResponseDataRateBytesPerSecond
. По умолчанию 5 секунд.
Предварительная настройка Chronos¶
Chronos – системный сервис, который необходим для корректной работы некоторых компонентов системы. Он занимается периодическим расчетом замещений, рассылкой почтовых уведомлений и т.д.
Необходимо выполнить предварительную настройку данного сервиса, а далее, после установки конфигурации, выполнить окончательную установку сервиса Chronos - т.е. выполнять все действия в той последовательности, как это описано в данном руководстве.
Скопируйте папку сборки Chronos
в SYSTEM_VOLUME:\tessa\
, где SYSTEM_VOLUME
- основной раздел сервера, на котором установлена система. Полный путь к запускаемому файлу будет C:\tessa\Chronos\Chronos.exe
(если C:
- системный диск). Позже Chronos будет установлен как служба Windows.
Далее необходимо указать строку подключения к базе данных в файле Chronos\app.json
. За информацией о настройках в файле app.json
обратитесь к разделу Настройка конфигурационного файла (параметры конфигурационных файлов веб-сервиса web\app.json
и Chronos аналогичны).
Note
Не забудьте скопировать файл лицензии .jlic
или .tlic
в папку Chronos.
Установка конфигурации¶
Для импорта конфигурации и первичной настройки воспользуемся утилитой автоматизированной установки и настройки системы tadmin.exe
.
Предварительно требуется настроить подключение утилиты к серверу баз данных. При настройке учетной записи, от которой будет выполняться подключение необходимо учитывать:
-
Если пустая база данных была создана заранее (стандартными средствами через SQL Server Management Studio (далее
SSMS
)/pgAdmin), то подключение к БД должно быть от учётной записи, у которой есть права на использование созданной базы данныхtessa
(в т.ч. можно использовать встроенную учётную записьsa
/postgres
). -
Если база данных не создана, то учетная запись должна иметь права на создание баз данных. Утилита создаст новую базу данных и загрузит в нее конфигурацию.
Note
Подробное описание доступных команд для консольной административной утилиты tadmin.exe
см. в Руководстве администратора.
В конфигурационном файле Tools\app.json
укажите подключение к SQL Server/PostgreSQL в группе настроек ConnectionStrings
аналогично настройкам, заданным в Настройка конфигурационного файла.
Теперь запустите Setup.bat
из папки сборки. Если сервис установлен на Windows и расположен в папке C:\inetpub\wwwroot
, то запустите имени администратора. Если сервис в папке, не требующей административный доступ, то запустите от пользователя, имеющего доступ к папке веб-сервиса. Будет предложено указать адрес подключения, или нажмите клавишу [Enter], чтобы использовать адрес по умолчанию:
Далее, аналогично, будет предложено выбрать имя создаваемой БД. Нажмите [Enter], чтобы не создавать базу данных и подключаться к той базе данных, которая указана в конфигурационном файле.
Note
Если ввести имя базы данных и нажать Enter, то эта база данных будет использоваться вместо той, что указана в конфигурационном файле. При этом база данных будет создана средствами скрипта, поэтому в строке подключения к БД должна использоваться учётная запись, позволяющая создавать базы данных, например, sa
/postgres
, либо другая роль, имеющая разрешение dbcreator
.
Затем, аналогично, укажите путь для файлового хранилища на диске. Или оставьте значение по умолчанию, нажав на клавишу [Enter].
Note
К указанной папке файлового хранилища должны быть права на чтение и на запись у созданной выше учётной записи tessa
, от имени которой работают пулы приложений и Chronos.
Далее укажите смещение часового пояса во временной зоне по умолчанию в минутах. Например, для часового пояса UTC+02:00 укажите 120 (2 часа умножить на 60 минут в часе). Нажмите Enter, чтобы использовать смещение по умолчанию 180 (для UTC+03:00). После установки вы можете изменить смещение в карточке настроек “Временные зоны”.
После этого, укажите путь до веб-сервиса Tessa. Нажмите [Enter], чтобы использовать путь по умолчанию.
Затем, аналогично, укажите путь до сервиса Chronos. Или оставьте значение по умолчанию, нажав на клавишу [Enter].
Если в процессе создания БД будут ошибки, выведется соответствующее сообщение с указанием пути к файлу лога. Например, если вы по запросу скрипта ввели имя БД tessa
, причём эта же БД существовала на момент запуска скрипта, то будет выведено сообщение:
Исправьте причину ошибки, после чего перезапустите скрипт.
При успешном завершении установки выводится сообщение “Tessa is installed”. Можно нажать любую клавишу, чтобы закрыть окно, и проверить установку.
Проверка работоспособности веб-сервисов¶
Откройте веб-браузер и откройте страницу по адресу: https://SERVER_NAME/tessa/web/check
(замените SERVER_NAME
на сетевое имя сервера приложений).
Note
Если вы использовали самоподписанный сертификат при настройке веб-сервера, то подтвердите, что хотите продолжить, несмотря на проблему с сертификатом. При необходимости добавьте сертификат в исключения веб-браузера.
Tip
Начиная со сборки 3.6.0.7 вы можете выполнить команду tadmin check
без параметров, это выведет в окно консоли содержимое страницы по адресу /check
. Необязательным параметром без имени вы можете указать базовый адрес веб-сервиса, например, tadmin check http://127.0.0.1:5000
.
Откроется страница примерно следующего содержания. Если на странице не заметно ошибок при проверке карточек или представлений (строки снизу), то веб-сервис корректно настроен.
Установка Chronos¶
Chronos – системный сервис, который необходим для корректной работы некоторых компонентов системы. Он занимается периодическим расчетом замещений, рассылкой почтовых уведомлений и т.д.
Note
Перед выполнением действий, описанных в данном разделе убедитесь, что выполнена Предварительная настройка Chronos.
Чтобы установить Chronos как службу Windows и сразу запустить его, выполните с правами администратора командный файл install-and-start.bat
:
В случае успешной установки будет выведено:
Закройте консоль нажатием любой клавиши. Откройте приложение “Службы” (нажмите [Win]+[R]
, введите services.msc
). Найдите службу с именем “Syntellect Chronos”. Это установленная служба сервиса Chronos, её можно останавливать, запускать и перезапускать ссылками под именем службы в левой части окна.
../../adm/admin/
По умолчанию служба установлена со следующими параметрами:
-
Способ запуска: автоматически (при запуске системы)
-
Учётная запись: LocalSystem
-
Запуск службы Chronos выполняется из той же папки, из которой она установлена
Если требуется изменить параметры службы перед первым запуском (например, указать другую учётную запись), то вместо файла install-and-start.bat
запустите файл install.bat
в той же папке. Далее откройте приложение “Службы”, найдите службу с именем “Syntellect Chronos”, измените её параметры в контекстном меню “Свойства”, и запустите службу вручную.
Если вы хотите изменить имя службы, или установить несколько служб Chronos (для разных инсталляций Tessa), то откройте командный файл install-and-start.bat
или install.bat
в блокноте, и измените выделенные две строки:
-
ServiceName
- это алиас сервиса, используемый в командной строке для утилитыsc.exe
(см. ниже). Должен быть уникален в пределах сервера. -
ServiceDisplayName
- это отображаемое имя сервиса, которое выводится в окне приложения “Службы”. Должно быть уникально в пределах сервера.
После установки службы вы можете управлять её состоянием, используя утилиту командной строки sc.exe
вместо приложения “Службы”. Подробнее параметры утилиты описаны в документации Microsoft.
Например, команда sc.exe query <ServiceName>
выводит текущее состояние службы (на скриншоте RUNNING
- служба запущена).
Для удаления службы (с вежливой остановкой перед удалением, если служба запущена) запустите командный файл uninstall.bat
от имени администратора в папке сервиса. Если вы изменяли строку ServiceName
при установке сервиса, то перед запуском отредактируйте командный файл и задайте в нём вашу строку.
После остановки и удаления службы вы увидите сообщения следующего вида. Закройте окно консоли. Служба “Syntellect Chronos” должна исчезнуть в приложении “Службы” после обновления списка служб (клавиша [F5]).
Настройка почтовых уведомлений и мобильного согласования описаны далее.
Проверка работоспособности системы¶
Запустите приложение Applications\TessaAdmin\TessaAdmin.exe
с параметрами (замените SERVER_NAME
на сетевое имя сервера приложений):
TessaAdmin.exe /a:https://SERVER_NAME/tessa
Note
Если вы запускаете TessaAdmin на том же сервере, где установлены сервисы, то запуск можно производить без параметров (т.е. приложение запустится с подключением к адресу по умолчанию https://localhost/tessa
).
Система запросит данные для аутентификации в системе, укажите логин: admin
, пароль: admin
(далее в справочнике сотрудников логин/пароль можно будет изменить или заменить на windows аутентификацию, см. Руководство Администратора СЭД TESSA). Приложение Tessa Admin запустится и вы увидите подобное окно:
Если все в порядке, закройте приложение. Аналогично можно проверить приложение TessaClient.
Для проверки работы web-клиента необходимо перейти по адресу https://localhost/tessa/web
. Должно открыться окно логина (если окно логина сразу не откроется, попробуйте подождать пару минут и перезапустить IIS):
Введите логин/пароль для аутентификации в системе Tessa. Для пользователей с типом входа в систему - Windows
логин следует указывать с именем домена, например: domain\TessaUser
.
После успешной аутентификации в web-клиенте будет открыто рабочее место:
Вы успешно установили и настроили типовую конфигурацию платформы Tessa. Последующие подпункты в этом пункте можно пропустить, они затрагивают импорт конфигурации вручную (без помощи скрипта Setup.bat
).
Обновление конфигурации при переходе на новую сборку платформы описано в Руководстве администратора.
Теперь переходите к настройкам почтовых уведомлений и мобильного согласования в сервисе Chronos.
Установка системы вручную (не рекомендуется для типовой конфигурации)¶
Также импортировать конфигурацию в базу данных можно вручную, выполнив действия, описанные ниже.
Импорт схемы данных¶
Запустите приложение Applications\SchemeEditor\SchemeEditor.exe
. Выберите меню Файл\Открыть\Файл...
. В появившемся диалоге выберите файл Configuration\Scheme\Tessa.tsd
. Откроется окно добавления схемы с указанием включенных библиотек:
После нажатия на кнопку ОК схема будет открыта:
Далее нажмите в меню Файл\Сохранить как...\Базу данных...
и в диалоге выберите используемую СУБД, введите параметры подключения к базе данных:
Вы получите вот такое сообщение:
Нажмите кнопку Да. Система создаст необходимые для работы приложения системные объекты и вы увидите диалог:
Нажмите кнопку Сохранить. Система начнет создавать объекты базы данных и по мере ее работы успешно созданные объекты будут заливаться зеленым. Через несколько секунд, когда все будет завершено, окно будет выглядеть так:
Нажмите кнопку Закрыть и закройте приложение SchemeEditor
.
Импорт библиотек локализации¶
Для начала нужно импортировать библиотеки локализованных констант. Для этого запустите приложение Tessa Admin
из папки Applications\TessaAdmin
, указав логин admin
и пароль admin
. Необходимо перейти на вкладку Локализация. В верхнем меню нужно выбрать пункт Импорт, а в выпавшем меню нажать по кнопке Импорт из файла.
В появившемся окне перейдите в папку из сборки Configuration\Localization
и, выбрав все файлы (например, выделив первый и нажав [Ctrl]+[A]
), нажмите Открыть.
Далее в верхнем меню необходимо нажать на кнопку Сохранить всё (с дискетой) и дождаться пока система закончит сохранение библиотек локализаций.
Импорт типов карточек и заданий¶
Теперь необходимо импортировать типы карточек и заданий. Для этого перейдите на вкладку Карточки и нажмите кнопку Импорт - Импортировать типы… В выбранном окне перейдите в папку из сборки Configuration\Types\Cards
и, выбрав все файлы, нажмите Открыть.
Добавленные типы карточек отобразятся в дереве жирным и со знаком ***:
Нажмите кнопку Сохранить всё, чтобы сохранить импортированные типы карточек. Повторите эту операцию для папки Configuration\Types\Tasks
из сборки.
Повторите эту операцию для папки Configuration\Types\Files
из сборки.
Аналогично повторите эту операцию для папки Configuration\Types\Dialogs
из сборки.
Импорт карточек¶
Для импортирования карточек нужно использовать Tessa Admin
, выбрав пункт Импорт - Импортировать карточки… в строке меню на вкладке Карточки.
В появившемся окне нажимаем кнопку Открыть и указываем путь к библиотеке карточек из сборки Configuration\Cards\Tessa.ms.cardlib
(или Tessa.pg.cardlib
, если установка выполняется для СУБД PostgreSQL). В окне импорта появятся карточки из выбранной библиотеки.
Нажимаем “Импортировать отмеченные карточки”. При успешном завершении процесса импорта появится окно с подобным сообщением:
Аналогично укажите библиотеку карточек Configuration\Cards\File templates.cardlib
и импортируйте её.
Импорт представлений¶
Теперь проведём импорт представлений. Для этого перейдите на вкладку Представления и нажмите кнопку Импорт. В появившемся окне укажите путь до папки из сборки Configuration\Views
. Нажмите кнопку Выбрать все. Так же нужно установить галочку Заменить разрешения в базе данных. Затем нажмите кнопку Выполнить.
Появится окно с сообщением о том, что импорт представлений завершён успешно.
Обновим список в справочнике представлений и убедимся, что представления были успешно импортированы.
Импорт рабочих мест¶
Теперь необходимо импортировать рабочие места. Для этого перейдите на вкладку Рабочие места и нажмите кнопку Импорт. В появившемся окне укажите путь до папки из сборки Configuration\Workplaces
. Нажмите кнопку Выбрать все. Установите флажки Заменить разрешения в базе данных и Импортировать внедрённые в рабочие места файлы поисковых запросов, затем нажмите кнопку Выполнить.
Появится окно с сообщением о том, что импорт рабочих мест завершён успешно.
Обновим список в справочнике рабочих мест и убедимся, что рабочие места были успешно импортированы.
Расчёт календаря¶
Для нормального функционирования системы – необходимо провести первичный расчёт календаря.
Расчет календаря выполняется в приложении Tessa Client. Запуск Tessa Client можно произвести после установки клиентского рабочего места (описано в данном руководстве далее) или запустив Tessa Client с параметрами (замените SERVER_NAME
на сетевое имя сервера приложений):
TessaClient.exe /a:https://SERVER_NAME/tessa
Данные для аутентификации указать те же - логин: admin
, пароль: admin
.
Откройте карточку настроек календаря (правая панель –> Настройки – Календарь), заполните параметры (начало/конец рабочего дня, начало/конец обеденного перерыва, период действия календаря) и нажмите кнопку “Пересчитать календарь”.
Tip
Рекомендуется период действия календаря установить равным двум-трем годам от текущей даты. Следует учитывать, что чем больше период расчёта календаря, тем более медленными будут операции расчёта рабочего времени.
По окончанию операции расчёта календаря, можно воспользоваться кнопкой Проверить целостность, чтобы удостовериться, что календарь рассчитан корректно.