Tomcat - несколько пользователей получают один и тот же идентификатор сессии - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь устранить проблему.Пользователь вошел в приложение, используя CAS SSO.Этот пользователь вошел в учетную запись другого пользователя - обычно в учетную запись пользователя, которая вошла в систему за несколько секунд до этого.У кого-нибудь есть идеи относительно того, почему это происходит и как его решить?

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

В этих системах работает Apache Tomcat 8.0.15 и CAS версии 3.6

Мы собираемся обновить Tomcat до 8.5.35 и, возможно,исправляет это, но мы предпочитаем часть разума доказательства.До сих пор мы не нашли ничего в примечаниях к выпуску или исправлениях ошибок, которые, по нашему мнению, точно соответствовали проблеме, с которой мы столкнулись.Таким образом, мы также не хотим исключать возможную ошибку конфигурации в настоящее время.

Так что, если у кого-то есть какие-либо предложения по поводу причины или, что еще лучше, видели это раньше и знаете, что это исправило для вас, пожалуйста, поделитесь.

Мы обнаружили следующее сообщение об ошибке:

05-Dec-2018 13: 51: 07.477 SEVERE [catalina-exec-149] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service () для сервлета [cas] в контексте с путем [/cas] сгенерировал исключение [Ошибка обработки запроса;вложенным исключением является java.lang.NullPointerException] с основной причиной

java.lang.NullPointerException

Нам кажется, что он больше не может получить sessionID и вместо того, чтобы не разрешать новый сеанс,он просто использует предыдущий активный sessionID.Звучит как ошибка, но опять-таки не нашли окончательного доказательства того, что она исправлена ​​в выпуске, который мы также обновляем.

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

Посмотрите, как два разных IP-адреса оба получили один и тот же идентификатор сеанса.11 / Dec / 2018: 18: 07: 00 -0500] GET /cas/login?service=https%3A%2F%2Fsed.instructure.com%2Flogin%2Fcas HTTP / 1.1 200 5831 - Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 70.0.3538.110 Safari / 537.36 -

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 13 декабря 2018

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

Просто чтобы быть уверенным: Tomcat 8.0.15 был выпущен 4 года назад, а Tomcat 8.0в июне 2018 года он достиг срока службы - возможно, вы также захотите убедиться, что вы получили все исправления безопасности и обновились до 8.5 или 9.0, особенно когда вы спрашиваете о проблеме безопасности здесь.

...