Невозможно прочитать cookie-файл JSESSIONID после установки cookie-config для httpOnly и защиты в файле web.xml. - PullRequest
1 голос
/ 27 марта 2019

Я добавил следующую конфигурацию в свое приложение webapp web.xml

  <session-config>
    <cookie-config>
      <path>/</path>
      <http-only>true</http-only>
      <secure>true</secure>
    </cookie-config>
 </session-config>  

Когда я запускаю свое приложение, я отправляю запрос http, чтобы установить этот cookie, и вижу его в ответе http сpath /, Secure и httpOnly.

Однако я не вижу, чтобы этот файл cookie отправлялся в следующих http-запросах и, следовательно, если я выполняю request.getSession (). getId () для следующих запросов, яполучить пустую строку.

Я попытался добавить следующее в свой контекст tomcat 8.5, а также в контекст WAR

<Context sessionCookiePath="/">

, но это не решило проблему.

это означает, что cookie-файл JSESSIONID не защищен и поэтому игнорируется для отправки в запросах?

1 Ответ

2 голосов
/ 27 марта 2019

Согласно вашему комментарию вы устанавливаете атрибут cookie сеанса secure на true, используя http соединение для транспорта.

Хотя используемый протокол http не гарантирует конфиденциальную передачувы правильно указываете, что сеанс является конфиденциальной информацией, активируя атрибут secure.Поэтому браузер отказывается отправлять эту информацию обратно на сервер через незащищенный простой текст http транспорт.

Прочтите этот раздел вопросов и ответов для получения дополнительной информации: Как работает флаг cookie «Безопасный»?

Поскольку JSESSIONID никогда не отправляется обратно на сервер, каждый запрос в итоге создает новый сеанс, который никогда не используется для последующих запросов.

Решение состоит в том, чтобы либо отключить secure атрибут или предварительно настройте и используйте https соединитель в tomcat .

Вы также должны настроить свое приложение для приема только https подключений и перенаправления http до https.

...