Ошибка просмотра jsf с истекшим сроком действия при использовании обратного прокси-сервера

Я пишу решение EAI (интерфейс внешней аутентификации), которое предоставляет страницы входа/выхода для некоторых приложений.

В настоящее время у нас есть балансировщик нагрузки F5, который находится перед двумя обратными прокси-серверами WebSEAL 6.1, которые затем распределяют запросы между двумя приложениями, работающими на WebSphere Application Server 8.0.0.10.

Страницы входа обслуживаются из приложения JSF 2.0.6 и используют сохранение состояния client, поэтому у нас нет тайм-аутов сеанса.

Страницы также используют bean-компоненты с областью запроса, чтобы быть как можно ближе к безгражданским, поскольку я не могу использовать JSF 2.2 для использования реального флага без гражданства.

Мы обнаружили проблему со следующим сценарием и пытаемся найти решение

  1. Клиент переходит на страницу авторизации в своем браузере. WebSEAL отправляет их на один из серверов WebSphere.
  2. Затем клиент отправляет форму, но WebSEAL отправляет новый запрос на другой сервер WebSphere.
  3. Затем клиент сталкивается с ошибкой, но перенаправляется на пустую страницу входа.

Мы используем OmniFaces FullAjaxExceptionHandler для перехвата ошибки View Expired, которая возникает на шаге 2.

Мы также можем воссоздать ошибку, заставив WebSEAL перенаправить трафик между двумя серверами WebSphere и смоделировать сценарий.

Эта проблема, по-видимому, связана с тем, что состояние просмотра с одного сервера WebSphere несовместимо с другим сервером WebSphere, что имеет смысл.

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

Есть ли способ сделать состояние просмотра клиента с одного сервера совместимым или работать с другим сервером?

Любая помощь в этом вопросе будет оценена по достоинству.


person Adam Charlton    schedule 16.02.2016    source источник
comment
Похоже, что эта проблема связана с тем, что состояние просмотра с одного сервера WebSphere несовместимо с другим сервером WebSphere, что имеет смысл почему это имеет смысл? При сохранении состояния на стороне сервера и без использования кластеризации это происходит, но почему здесь?   -  person Kukeltje    schedule 16.02.2016
comment
@Kukeltje Извините, для меня это имело смысл, я предполагал, что состояние просмотра даже при использовании сохранения состояния клиента будет характерным для одного сервера WebSphere, а не общим для любого сервера WebSphere.   -  person Adam Charlton    schedule 22.02.2016
comment
Возможно, вам также следует настроить явный ключ шифрования для сохранения состояния на стороне клиента (или он у вас уже есть?)   -  person Kukeltje    schedule 19.04.2016


Ответы (1)


Я не уверен, что мне разрешено отвечать на мой собственный вопрос, но я нашел решение, которое работает для нас.

Мы использовали тег OmniFaces enableRestorableView для восстановления представления, когда оно повреждено или отсутствует в таких ситуациях.

http://showcase.omnifaces.org/taghandlers/enableRestorableView

В обоих наших тестовых случаях принудительного прерывания и изменения состояния просмотра на странице тег позволяет нашему приложению продолжить работу с использованием параметров формы.

person Adam Charlton    schedule 21.02.2016