Можно ли использовать два разных приложения весенней сессии с одним сервером Redis?

Я начал успешно использовать весенний сеанс с одним сервером nginx, двумя tomcats и одним сервером Redis для реализации кластерных сеансов, и возникли некоторые вопросы. Прежде всего, когда я говорю о разных приложениях, я имею в виду два полностью приложения, я не говорю о двух экземплярах одного и того же приложения.

Могу ли я использовать два или более разных приложения spring-session для хранения сеансов только с одним работающим сервером Redis?

Эти приложения могут работать в разных экземплярах котов?

Как сеанс Spring избежать конфликта идентификаторов сеанса между различными приложениями с одним сервером Redis?

Нужно ли добавлять идентификатор суффикса или префикса, чтобы избежать этой проблемы?


person Marcelo Fernandes    schedule 24.07.2015    source источник


Ответы (1)


В настоящее время Spring Session изначально не поддерживает сеансы определения области действия. Подробнее об отслеживании см. gh-166.

Spring Session генерирует безопасный случайный идентификатор с высоким уровнем энтропии для идентификатора сеанса, поэтому вероятность возникновения коллизий крайне мала.

Это означает, что вы можете использовать один и тот же экземпляр Redis для нескольких приложений с помощью Spring Session, если вы согласны со следующим утверждением:

Злоумышленник может использовать идентификатор сеанса приложения A с приложением B. Почему это важно? Рассмотрим следующий сценарий:

  • Приложение А — общедоступное приложение, для которого любой пользователь может создать учетную запись.
  • Приложение B — это частное приложение, в котором могут зарегистрироваться только приглашенные пользователи.
  • Злоумышленник создает учетную запись и аутентифицируется с помощью приложения A.
  • Пользователь копирует свой идентификатор сеанса для приложения A. Он переходит к приложению B и вставляет идентификатор сеанса в свои файлы cookie для приложения B, и теперь он аутентифицирован.

Это может не быть проблемой для вас. Например, хорошая практика безопасности гарантирует, что пользователь будет должным образом авторизован путем поиска роли ADMIN в приложении B. Приложение A не будет заполнять эту роль, поэтому, хотя пользователь аутентифицируется в приложении B, он не имеет права использовать его.

person Rob Winch    schedule 10.08.2015
comment
Я оцениваю весеннюю сессию, и она отлично работает. Я также переношу около тридцати корпоративных приложений из xml в конфигурацию java spring. Основной проблемой сейчас является конфигурация Java безопасности Spring. У нас есть собственное решение для единого входа, и мы интегрируем его с Spring Security. Этот SSO решает проблему, о которой вы рассказали, о злонамеренном пользователе, которого вы описали. Спасибо за ваш ответ @rob-winch. Извините, моя опечатка. - person Marcelo Fernandes; 14.08.2015
comment
Я тогда ответил на твой вопрос? Если да, можете ли вы принять ответ? Если нет, можете ли вы указать, где я ошибся? - person Rob Winch; 14.08.2015