Учет сессий

Любое взаимодействие с системой подчиняется общей лицензионной политике и производится в рамках общего таймаута сессий пользователя, независимо от способа взаимодействия (web-интерфейс, REST-запрос, мобильное приложение). Если при этом необходимо обеспечить гарантированный отклик системы, то рекомендуется использовать лицензии именного типа вместо лицензий конкурентного типа.

Создание сессии

Создать активную сессию и занять лицензию можно, выполнив:

  • вход в систему одним из способов: стандартный ввод логина и пароля или использование механизмов прозрачной аутентификации;
  • REST-запрос в системе от имени пользователя.

REST-запросы

При выполнении REST-запроса учитывается сессия пользователя. REST-запрос создает сессию на основании AccessKey пользователя, в том числе, если REST метод, использующий AccessKey пользователя, применяется в планировщике задач.

При нескольких REST-запросах от имени одного пользователя занимается одна лицензия, а все сессии объединяются в одну активную сессию.

Время жизни сессии, созданной REST-запросом, равно значению параметра maxInactiveInterval лицензионного файла, заданного для группы лицензий пользователя, с AccessKey которого был выполнен запрос. Каждый повторный REST-запрос с тем же AccessKey пользователя продлевает сессию на время, указанное в лицензионном файле.

Например, для пользователей с конкурентной лицензией таймаут сессии пользователя равен 5 минут. REST-запрос с AccessKey пользователя с конкурентной лицензией создает новую сессию, которая завершится через 5 минут. Если будут повторные запросы с тем же AccessKey пользователя до момента разрыва сессии, то сессия будет продлеваться на 5 минут.

Если повторный запрос с тем же AccessKey будет совершен уже после завершения сессии, то инициируется новая сессия.

Физические ограничения REST API:
Лимит пропускной способности (одновременной обработки REST-запросов) до 50 потоков.
Лимит общей очереди на все потоки по умолчанию равен 50 000, но может быть увеличен.

Исключения: REST-методы, не занимающие лицензию пользователя:

  • check-status
  • /rest-cti/make-call
  • /rest-cti/cdr/search

Активные пользователи

Активные пользователи = количество всех записей в списке "Активные пользователи". Список отображается в интерфейсе администратора, раздел меню "Настройки системы" → настройка "Администрирование" → блок "Активные пользователи".

Активные сессии = сумма активных сессий у всех активных пользователей.

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

  • если пользователь исчерпал доступные сессии и совершил выход из приложения в одной из сессий, нажав кнопку Выйти;
  • если сессия принудительно завершена администратором, а пользователь пока не совершал действий в приложении и не получил сообщение о том, что его сессия истекла;
  • если сессия пользователя истекла по таймауту и пока не удалена из реестра сессий;
  • если сессия окончилась из-за того, что была вытеснена другой сессий, и пользователь не совершал никаких действий в завершенной (вытесненной) сессии.

Если пользователю изменили тип лицензии пока у него есть хотя бы одна активная сессия, то изменения вступят в силу только после завершения прошлой сессии и начала новой.

Связанные ссылки

Обнаружение аномалий сессий

Чтобы препятствовать похищению сессий у пользователей другими пользователями, в системе реализован механизм обнаружения аномалий. При обнаружении аномалии завершается старая сессия пользователя.

Аномалии: смена IP, смена User-Agent.

Завершение сессии

Сессия пользователя завершается в следующих случаях:

  • по таймауту, определенному в лицензионном файле;
  • по таймауту, установленному в Tomcat (по умолчанию 30 минут);
  • принудительное завершение сессии администратором в списке "Активные пользователи" (раздел меню "Настройки системы" → настройка "Администрирование" → блок "Активные пользователи");
  • завершение сессии самим пользователем, нажав кнопку Выйти);
  • при технических работах.

Таймаут, указанный в лицензионном файле, имеет более высокий приоритет, чем таймаут Tomcat.
Таймаут Tomcat используется только в случае, если таймаут в лицензионном файле не указан или 0.

При завершении сессии во время работы во встроенном приложении или с основными компонентами системы, при выполнении какого-либо действия пользователь перенаправляется на страницу авторизации с сообщением: "Превышен период ожидания сессии или данная учетная запись используется на другом компьютере. Для входа в систему введите логин и пароль".

Связанные ссылки:

Повторная авторизация пользователя

При завершении сессии по таймауту дальнейшие действия зависят от того, как пользователь ранее заходил в систему:

  • с использованием логина и пароля — происходит переход на страницу авторизации, на которой отображается сообщение: "Превышен период ожидания сессии или данная учетная запись используется на другом компьютере. Для входа в систему введите логин и пароль";
  • с использованием механизма прозрачной аутентификации — происходит автоматический перезаход в систему и переход на последнюю посещенную страницу, при этом всплывающие окна остаются открытыми.

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

Если у пользователя на момент завершения сессии была открыта страница добавления или редактирования объекта, например, форма добавления запроса, а инициирующим действием для повторной авторизации было нажатие кнопки Сохранить, то после аутентификации открывается та же страница и срабатывает механизм восстановления введенных значений на форме.

Автоматическое продление сессии пользователя

Встроенные приложения

Реализация автообновления зависит от конкретного встроенного приложения. Автообновление может включаться в веб-интерфейсе, в коде встроенного приложения или может отсутствовать.

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

Компоненты системы

  • Включенное автообновление комментариев не продлевает сессию пользователя и не занимает лицензию, если вкладка с контентом "Комментарии" неактивна.

    Автообновление комментариев включается и выключается в конфигурационном файле dbaccess.properties (параметр ru.naumen.use.live.comments).

    Сессия не продлевается только если NGINX настроен корректно (Настройка WebSocket).

  • Использование механизма доставки уведомлений в интерфейсе оператора через comet-соединение не продлевает сессию пользователя.
  • Включенное автообновление списка объектов в представлении "Сложный список" продлевает сессию пользователя, лицензия занимается. Автообновление сложного списка может использоваться как мониторинг. Объектами мониторинга будут выступать объекты, выведенные в список.

    Автообновление считается включенным, если нажата кнопка Обновлять список. Состояние кнопки Обновлять список для списка объектов в представлении "Сложный список" хранится в браузере пользователя.

Учет сессий в Мобильном приложении

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

Особенности лицензионной политики и учета активных сессий в мобильном приложении: