Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > ACEGI Adapter Authentication Provider |
Автор: Foo 19.5.2008, 15:55 | ||
Всем Привет. Мне необходимо реализовать в своем проекте Adapter Authentication Provider для ACEGI Security. На эту тему есть оффициальная документация http://acegisecurity.org/guide/springsecurity.html#ca. Сделал по доке, но есть 1 ньюанс, они просят скопировать в томкат ряд jar-ок:
Причем ни оной из этих jar файлов недолжно быть в самом приложении, но у меня приложение использует Spring. C помощью Spring я создаю бины, соответственно использую классы из своего приложения, а также hibernate классы и т.д. При запуске томката acegi нормально запускается, а потом начинатеся создание бинов внутри моего приложения, и тут начинаются проблемы ClassNotFoundException. Как можно решить это не вынося hibernate и остальные классы в томкат? |
Автор: Zamuta 20.5.2008, 18:24 |
Foo, совсем не обязательно копировать эти либы в $CATALINA_HOME/common/lib, это делается если ты хочешь, чтобы они были доступны всем приложениям запущенным под этим томкатом, иначе же можешь держать нужные либы внутри приложения ( WEB-INF/lib/ ). Это единственная известная мне разница. |
Автор: Foo 21.5.2008, 12:43 |
Дело в том, что мне необходимо вынести настройку acegi из приложения в томкат. Для этого я как и написано в документации копирую acegisequrity.xml в томкат/conf. Также я прописываю в server.xml что реалим нужно настраивать по этому файлу. Если я напимер скопирую spring.jar в свое приложение и в common/lib его небудет то я получу java.lang.NoClassDefFoundError: org/springframework/core/NestedRuntimeException в момент старта сервера. Может есть возможность сказать томкату чтобы он к своему класпасу добавил jar-ки из моего приложения? или ещё какието варианты. |
Автор: Foo 21.5.2008, 14:02 |
может быть у кого нибудь есть хоть какойто пример использования Adapter Authentication Provider? ![]() |
Автор: Zamuta 21.5.2008, 20:16 | ||
Foo, Adapter Authentication Provider это хорошо. Дело вот в чём. У томката есть своя система аутентификации/авторизации основанная на JAAS (http://jaasbook.com/) . В основе Acegi тоже лежит JAAS. С Acegi ты получаешь гибкость настройки и использования плюс ещё полезные модули. В твоём случае думаю нужно выбрать что-то одно.
Т.е. тот же isUserInRole() и похожие методы из спецификации сервлета реализованиы и в Acegi. |
Автор: Foo 21.5.2008, 20:46 | ||||
Ок, я попытаюсь описать что мне нужно сделать. В своем приложении я использую спринг для создания бинов, также в спринге у меня конфигурируется acegi. Я описал там несколько провайдеров нужных мне - база данных, ин-мемори и др. Проблема в том, что конфиг в котором я описал провайдеры и AuthenticationManager находится внутри war фала. Мне нужно вынести это настройик из war файла, для чего я хочу использовать Container Adapter Authentication. Судя по документации, если я сделаю это, то смогу положить конфиг файл с настройками провайдеров кудато в томкат, также я пропишу в томкате реалм, который будет брать данный из acegi
после чего в приложении я буду использовать AuthByAdapterProvider
и это решит мою проблему. Покачто мне неудалось сделать это, както уж слишком поверхностно написано все в документации, может вы делали чтото подобное и можете расказать как это сделать. |