Перейти к содержанию

Установка 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.

  1. В Диспетчер служб IIS создать новый пул приложений в IIS. Назовите его *tessa и настройте его на работу Без управляемого кода* и на работу от учетной записи “tessa”.

    Для настройки учетной записи необходимо выбрать созданный в предыдущем пункте пул приложений и нажать Дополнительные параметры…:

    В открывшемся окне в поле Удостоверение нажать на кнопку с изображением трех точек:

    Выбрать Особая учетная запись, нажав на кнопку Установить… откроется окно, где необходимо указать учетную запись (в формате имя домена\имя учетной записи и пароль):

    Также нужно установить Максимальное число рабочих процессов равным числу физических ядер сервера. Это очень рекомендуется делать на системах, для которых ожидается высокая нагрузка.

  2. Убедитесь, что веб-сайт Default Web Site запущен (щелкаем правой кнопкой на сайте, далее Управление веб-сайтом->Начало).

  3. Создайте папку C:\inetpub\wwwroot\tessa.

  4. Скопируйте в нее из папки сборки Services всё содержимое, т.е. подпапку web, файлы app.json, localization.json, а также файл лицензии с расширением .tlic.

  5. Далее в диспетчере IIS вы увидите Default Web Site и вложенную в него папку tessa\web. Папку необходимо преобразовать в приложение через контекстное меню и указать в настройках пул приложений tessa:

  6. На уровне корневой папки tessa в разделе Параметры SSL включите флажок Требовать SSL, сертификаты клиента: игнорировать.

  7. Затем на уровне приложения 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 и находится в папке: c:\inetpub\wwwroot\tessa\app.json.

Note

При написании файлов app.json необходимо учитывать следующие особенности. Должен выполняться эскейпинг символа обратного слэша, т.е. пишем \\ вместо одного \, это часть стандарта JSON. В начале любого из значений можно написать символ @, это вставит путь к папке с текущим файлом app.json и обратным слэшом. Например, файл лежит в папке c:\inetpub\wwwroot\tessa и есть настройка с путём к файлу лицензии @Syntellect.tlic, то после обработки файла значение будет равно c:\inetpub\wwwroot\tessa\Syntellect.tlic. Это применимо к любым настройкам в 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": "@*.tlic"

    Ссылка на присланный вам файл лицензии. По умолчанию используется файл с расширением .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 (аналогично указанию файла с лицензией @*.tlic).

    Поддерживаются файлы сертификатов .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%.

    При запуске в контейнере 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

Не забудьте скопировать файл лицензии .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/

По умолчанию служба установлена со следующими параметрами:

  1. Способ запуска: автоматически (при запуске системы)

  2. Учётная запись: LocalSystem

  3. Запуск службы Chronos выполняется из той же папки, из которой она установлена

Если требуется изменить параметры службы перед первым запуском (например, указать другую учётную запись), то вместо файла install-and-start.bat запустите файл install.bat в той же папке. Далее откройте приложение “Службы”, найдите службу с именем “Syntellect Chronos”, измените её параметры в контекстном меню “Свойства”, и запустите службу вручную.

Если вы хотите изменить имя службы, или установить несколько служб Chronos (для разных инсталляций Tessa), то откройте командный файл install-and-start.bat или install.bat в блокноте, и измените выделенные две строки:

  1. ServiceName - это алиас сервиса, используемый в командной строке для утилиты sc.exe (см. ниже). Должен быть уникален в пределах сервера.

  2. 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

Рекомендуется период действия календаря установить равным двум-трем годам от текущей даты. Следует учитывать, что чем больше период расчёта календаря, тем более медленными будут операции расчёта рабочего времени.

По окончанию операции расчёта календаря, можно воспользоваться кнопкой Проверить целостность, чтобы удостовериться, что календарь рассчитан корректно.

Back to top