Как поделиться сеансами входа в WAB-пакеты
У меня есть несколько пакетов WAB со страницами JSF. Я знаю, как создать простую страницу входа в систему JSF. Проблема в том, как пакеты WAB могут совместно использовать пользовательские сессии? Я хочу, чтобы одно меню входа регистрировало сессии для всех пакетов WAB.
1 ответ
Каждый WAB развертывается как отдельное веб-приложение. Я не уверен, в какой контейнер вы развертываете WAB, но некоторые механизмы сервлетов (например, Tomcat или Jetty) можно настроить для обмена данными сеанса между различными веб-приложениями (WAR). (см. разделение сеанса между WARs)
Другой вариант - разработать собственный сервис единого входа. Эта служба может быть развернута как пакет OSGi и использоваться каждым WAB. Первый WAB, который входит в систему, регистрирует пользователя и секрет в службе. Секрет также хранится в зашифрованном виде в cookie-файле, действительном для всего домена (без пути). Как только другой WAB обнаружит cookie, он может сразу войти в систему. У каждого WAB все равно будет свой сеанс. Но сервис единого входа также можно использовать для обмена дополнительными данными между WAB. Служба также должна реализовать некоторую очистку для удаления старых данных. Есть также дополнительные опции безопасности, которые вы можете реализовать, чтобы адаптировать сервис к вашим потребностям.