Учет сессий
Любое взаимодействие с системой подчиняется общей лицензионной политике и производится в рамках общего таймаута сессий пользователя, независимо от способа взаимодействия (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
Активные пользователи
Активные пользователи = количество всех записей в списке "Активные пользователи". Список отображается в интерфейсе администратора, раздел меню "Настройки системы" → настройка "Администрирование" → блок "Активные пользователи".
Активные сессии = сумма активных сессий у всех активных пользователей.
Пользователь может не иметь ни одной активной сессии, но он будет отображаться в списке активных пользователей в следующих случаях:
- если пользователь исчерпал доступные сессии и совершил выход из приложения в одной из сессий, нажав кнопку Выйти;
- если сессия принудительно завершена администратором, а пользователь пока не совершал действий в приложении и не получил сообщение о том, что его сессия истекла;
- если сессия пользователя истекла по таймауту и пока не удалена из реестра сессий;
- если сессия окончилась из-за того, что была вытеснена другой сессий, и пользователь не совершал никаких действий в завершенной (вытесненной) сессии.
Если пользователю изменили тип лицензии пока у него есть хотя бы одна активная сессия, то изменения вступят в силу только после завершения прошлой сессии и начала новой.
Связанные ссылки
- Вход в систему для технолога и суперпользователя
- Вход в систему
- REST сервисы в системе
- Список активных пользователей
Обнаружение аномалий сессий
Чтобы препятствовать похищению сессий у пользователей другими пользователями, в системе реализован механизм обнаружения аномалий. При обнаружении аномалии завершается старая сессия пользователя.
Аномалии: смена IP, смена User-Agent.
Завершение сессии
Сессия пользователя завершается в следующих случаях:
- по таймауту, определенному в лицензионном файле;
- по таймауту, установленному в Tomcat (по умолчанию 30 минут);
- принудительное завершение сессии администратором в списке "Активные пользователи" (раздел меню "Настройки системы" → настройка "Администрирование" → блок "Активные пользователи");
- завершение сессии самим пользователем, нажав кнопку Выйти);
- при технических работах.
Таймаут, указанный в лицензионном файле, имеет более высокий приоритет, чем таймаут Tomcat.
Таймаут Tomcat используется только в случае, если таймаут в лицензионном файле не указан или 0.
При завершении сессии во время работы во встроенном приложении или с основными компонентами системы, при выполнении какого-либо действия пользователь перенаправляется на страницу авторизации с сообщением: "Превышен период ожидания сессии или данная учетная запись используется на другом компьютере. Для входа в систему введите логин и пароль".
Связанные ссылки:
Повторная авторизация пользователя
При завершении сессии по таймауту дальнейшие действия зависят от того, как пользователь ранее заходил в систему:
- с использованием логина и пароля — происходит переход на страницу авторизации, на которой отображается сообщение: "Превышен период ожидания сессии или данная учетная запись используется на другом компьютере. Для входа в систему введите логин и пароль";
- с использованием механизма прозрачной аутентификации — происходит автоматический перезаход в систему и переход на последнюю посещенную страницу, при этом всплывающие окна остаются открытыми.
Если инициирующим действием для повторной авторизации был переход по внутренней ссылке, то после аутентификации пользователь переходит в место назначения. Если такой страницы уже не существует, например, объект удален, или изменились права пользователя, то выводится соответствующее сообщение об ошибке.
Если у пользователя на момент завершения сессии была открыта страница добавления или редактирования объекта, например, форма добавления запроса, а инициирующим действием для повторной авторизации было нажатие кнопки Сохранить, то после аутентификации открывается та же страница и срабатывает механизм восстановления введенных значений на форме.
Автоматическое продление сессии пользователя
Встроенные приложения
Реализация автообновления зависит от конкретного встроенного приложения. Автообновление может включаться в веб-интерфейсе, в коде встроенного приложения или может отсутствовать.
Включенное автообновление встроенных приложений, для которых оно доступно, продлевает сессию пользователя и занимает лицензию. Включенное автообновление может использоваться пользователями в качестве мониторинга.
Компоненты системы
-
Включенное автообновление комментариев не продлевает сессию пользователя и не занимает лицензию, если вкладка с контентом "Комментарии" неактивна.
Автообновление комментариев включается и выключается в конфигурационном файле dbaccess.properties (параметр ru.naumen.use.live.comments).
Сессия не продлевается только если NGINX настроен корректно (Настройка WebSocket).
- Использование механизма доставки уведомлений в интерфейсе оператора через comet-соединение не продлевает сессию пользователя.
-
Включенное автообновление списка объектов в представлении "Сложный список" продлевает сессию пользователя, лицензия занимается. Автообновление сложного списка может использоваться как мониторинг. Объектами мониторинга будут выступать объекты, выведенные в список.
Автообновление считается включенным, если нажата кнопка Обновлять список. Состояние кнопки Обновлять список для списка объектов в представлении "Сложный список" хранится в браузере пользователя.
Учет сессий в Мобильном приложении
Вход в мобильное приложение и в веб-интерфейс системы под одной и той же учетной записью пользователя считается системой как одна активная сессия.
Особенности лицензионной политики и учета активных сессий в мобильном приложении: