Я хочу, чтобы клиенты нескольких связанных веб-приложений сохраняли свое собственное состояние аутентификации. Это улучшает масштабируемость, поскольку репликация сеанса между узлами кластера не требуется. И это упрощает интеграцию различных серверных технологий, таких как Java Servlets и PHP.Сессии на стороне клиента
Мой план заключается в следующем:
- Установить подписано и зашифровано печенье с момента истечения срока действия имени пользователя и сессии после аутентификации клиента.
- Когда клиент отправляет запрос, сервер расшифровывает и проверяет cookie и предоставляет или запрещает доступ в зависимости от значений cookie.
- Завершение сеанса будет обновлено путем сброса файла cookie.
Все серверы, которые хотят использовать сеанс, должны знать только механизм cookie и ключ дешифрования. См. Также: Session state in the client tier
Подходит ли этот подход? Можно ли интегрировать его в сервлет-контейнер/сервер приложений, чтобы он был прозрачным для приложений? Сервлет должен иметь возможность использовать HttpServletRequest # getRemoteUser(), например. Это возможно? Или мне нужно что-то выше уровня контейнера, такого как Spring Security? Существуют ли существующие библиотеки для управления сеансами на стороне клиента?
Это то, что он не хочет делать, потому что он хочет, чтобы решение было масштабируемым. Я думаю, что это единственный путь. –
Я хочу иметь хранилище для состояния аутентификации. И я не хочу сохранять это состояние на стороне сервера. У меня есть что-то вроде http basic authentication in mind, но вы хотите быть более гибким (например, для поддержки OpenID). – deamon