Статьи

Защита сервлетов AJAX в портале JBoss

До спецификации 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 теперь защищены с использованием того же домена безопасности, что и установка портала, и настроены для единого входа.

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

 

Из