Я думаю, что это ограничение среды Java EE, в то время как я еще не видел, чтобы это делалось иначе, чем на любом другом сервере.Если вам нужен управляемый контейнер security-constraint
, будет создан сеанс.
При этом вам не нужно реализовывать свой код для использования аутентификации, управляемой контейнером.Люди сами реализуют аутентификацию / механизмы входа в систему, такие как Shiro, а что нет.
Если вас беспокоит масштабируемость, вам, возможно, придется самостоятельно выполнять аутентификацию.Однако, прежде чем продолжить этот путь, подумайте о следующем ... сколько людей вы ожидаете использовать ваше приложение?Если вы не являетесь какой-то действительно крупной и популярной службой, такой как Facebook, Google и т. Д., Существующие аппаратные / облачные предложения должны быть в состоянии справиться с вашей нагрузкой с помощью HTTP-сессий с большим количеством свободного места.
Однако, если вы хотитечтобы сделать это самостоятельно, я предлагаю следующее:
- клиент, не прошедший проверку подлинности, передает учетные данные (с помощью
WWW-Authorization
проще всего тестировать) - учетные данныепроверены и токен возвращается.Токен представляет собой зашифрованную зашифрованную строку, содержащую идентификатор клиента, срок действия и токен повторной проверки.Этот токен передается обратно клиенту с помощью
Set-Cookie
- Клиент делает будущие запросы с
Cookie
, содержащим токен - Токен может использоваться до тех пор, покасрок его действия не истек, это будут просто криптографические вычисления на серверном узле, и, следовательно, при необходимости его можно масштабировать на несколько серверов. Нет единого хранилища данных для обработки.
- Маркер reauth можно использовать для генерацииновый токен для клиента в случае его истечения (это полезно для пользовательских приложений, где взаимодействие может длиться минуты).
Вы можете добавить корпоративный кэш для хранения того, какие из них по-прежнему действительны, за счет:дополнительный бэкэнд-звонок.