До спецификации Portlet 2 (JSR286) рекомендуемый метод добавления функциональности AJAX к портлету JSR168 заключался в развертывании дополнительного сервлета на сервере портала (либо в том же WAR, что и ваш портлет (ы), либо в автономном WAR). обрабатывать асинхронные запросы. Запросы к этим сервлетам затем обрабатываются контейнером сервлетов, а не направляются через контейнер портлетов, поэтому они не наследуют контекст безопасности от портала, как ваши портлеты.
Цель этой статьи — описать, как включить безопасность в ваших сервлетах AJAX в JBoss Portal 2.6.
JBoss Portal 2.7 поддерживает JSR286, который имеет встроенные в портлеты функции для обслуживания запросов AJAX. Таким образом, хотя этот метод может быть менее полезным в этой среде, ничто не мешает использовать сервлеты AJAX в среде 286, поэтому этот метод все еще может пригодиться.
Защита сервлетов AJAX в JBoss Portal 2.6 включает четыре этапа высокого уровня.
Шаг 1. Добавьте политику безопасности портала на контейнер сервлетов.
Шаг 1 — это в основном копирование / вставка. Ключевым моментом здесь является то, что вы конфигурируете контейнер сервлета для использования тех же параметров JAAS, которые вы настроили для использования портала. Вы можете посмотреть настройки JAAS портала в: $ PS_HOME / server / default / deploy / jboss-portal.sar / conf / login-config.xml
Там должен быть блок, который выглядит примерно так:
— вы захотите скопировать этот блок в конфигурацию входа, используемую контейнером сервлета: $ PS_HOME / server / default / conf / login-config.xml
Шаг 2. Защитите свое веб-приложение AJAX Servlet
Этот шаг является стандартным для защиты веб-приложений; Просто добавьте соответствующие параметры безопасности в файл web.xml, развернутый вместе с WAR-сервлетом AJAX.
Например, эти настройки могут выглядеть так:
Шаг 3. Настройте веб-приложение Servlet для использования политики безопасности портала
На этом этапе нам нужно указать веб-приложению сервлета, какой домен безопасности JAAS использовать, т. Е. Тот, который мы добавили на шаге 1. Для этого JBoss имеет собственное расширение спецификации сервлета, которое использует файл: jboss- web.xml в том же месте, что и ваш web.xml. Добавьте следующее:
На этом этапе ваше веб-приложение сервлета должно быть защищено и использовать тот же домен безопасности, что и портал. Есть только одна небольшая проблема: когда вы впервые войдете в систему, вы заметите (если вы использовали BASIC в качестве метода аутентификации, как в моем примере), вам будет предложено войти в систему с помощью вызовов AJAX в дополнение к входу на портал , Это связано с тем, что Портал и приложение AJAX-сервлета являются отдельными веб-приложениями, развернутыми на сервере приложений, и по сути не доверяют аутентифицированным сеансам друг друга.
Шаг 4. Включите единый вход между порталом и веб-приложением Servlet.
К счастью, JBoss использует Tomcat под крышками в качестве контейнера сервлета, а у Tomcat есть отличная встроенная функция для включения единого входа (SSO) между веб-приложениями. Для этого вам просто нужно включить SSO-клапан в конфигурации сервера Tomcat по адресу: $ PS_HOME / server / default / deploy / jboss-web.deployer / server.xml
См. Справочное руководство по порталу для получения дополнительной информации о включении единого входа в Tomcat .
Вывод
Так что это делает. Ваши сервлеты AJAX теперь защищены с использованием того же домена безопасности, что и установка портала, и настроены для единого входа.
Надеюсь, вы нашли эту технику полезной; если у вас есть какие-либо комментарии, вопросы или улучшения, пожалуйста, прокомментируйте.