![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Доброго времени суток.
Имеется задача написать аутентификацию/авторизацию для проги. Логика программы заключена в EJB 3.0. Список пользователей хранится в БД(postgresql). Запускается прга на аппсервере - glassfish 2 Для решения данной задачи было выбрано использовать JAAS. Написал свой LoginModule(почти). Вот только столкнулся с одной проблеммой, никак не могу получить ничего из базы используя JPA технологию. Существует ли какая-то возможность это реализовать или надо использовать методы по старинке(вручную коннектится к бд с помощью jdbc) ? Заранее спасибо. З.ы. хорошие статьи по реализации авторизации для ejb-компонентов приветствуются. |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Каким боком JAAS связана с JPA? Если у вас JPA не фунциклирует, значит не смогли настроить: курите мануалы к апп-серверу на эту тему.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Проблема была в том, что для определения EntityManager использовалась аннотация @PersistenceContext. Так вот в LoginModule по этой аннотации ничего не инжектилось. Заменил на :
и все в принципе заработало. Теперь надо курить, как это все связать с авторизацией в ejb. |
|||
|
||||
man_without_face |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 1.4.2008 Репутация: нет Всего: 1 |
Вообще Acegi лучше приспособлена к ECM приложениям. На IBM были доки на русском. Во! Нашёл.
http://www.ibm.com/developerworks/ru/library/j-acegi1/ http://www.ibm.com/developerworks/ru/library/j-acegi2/ http://www.ibm.com/developerworks/ru/library/j-acegi3/ |
|||
|
||||
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Что-то я никак не пойму. Можно ли связать Атунтификацию через JAAS(собственный логин модуль) и авторизацию через декларативное описание в web.xml, ejb-jar.xml ?
|
|||
|
||||
man_without_face |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 1.4.2008 Репутация: нет Всего: 1 |
вроде нет. если не изменяет память, нужно копать xml'ники в серверах приложений (JBoss, Tomcat). Кстати буки же есть по JAAS. ТАм наверняка всё написано.
|
|||
|
||||
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Вот и я все больше рпихожу к выводу, что не совмещаются эти технологии... :(
Хм... а через что тогда обычно люди делают такого рода авторизацию? Уже кучу инфы перечитал в инете по джасу, но возможно я чего-то недопонимаю... |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 7 Всего: 54 |
Если вы хотите получить собственную реализацию авторизации и аутентификации для EJB, то вам следует обратить внимание на спецификацию JSR 115, она же JAAC, она же Java Authorization Contract for Containers. Но самое главное - документация того конкретного сервера, который хотите использовать. Необходимый вам функционал выходит за рамки EJB и JEE и у всех реализован по своему.
-------------------- ![]() ![]() |
|||
|
||||
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Ну нужна пока авторизация и аутентификация для JSF, но в будующем понадобиться и для EJB.
Сейчас делаю по http://developers.sun.com/appserver/refere...tion/index.html думаю поможет. |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Совершенно справедливо было отмечено, что у каждого сервера по своему.
Я довольно долго бился в Tomcat для того, чтобы заставить сервер принимать специфическую JAAS аутентификацию. Думаю дело не в том, чтобы аутентифицировать, а в том, чтобы заставить сервер принять эту аутентификацию, после этого декларативная авторизация работает нормально. Кстати Sun пишет, что аутентификация web контейнером должна приниматься EJB контейнером, так что в этой части (с учетом сказанного выше) сомнений быть не должно. Это сообщение отредактировал(а) mbasil - 30.7.2008, 12:52 |
|||
|
||||
steals |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Используется glassfish v2u2 как аппликейшен сервер.
Вот в том-то и загвоздка. Когда я делаю свой лоигн модуль и ручками создаю логин контекст с моим модулем, потом вызываю метод логин, то все проходит отлично (аутентификация работает). Но получается что и дальше рулить авторизацией мне надо все руками. Вот в этом и затык... Насчет реализации своего собственного Realm для аппликейшен сервера, тоже думаю не пройдет. Вряд ли мне кто на продакшене позволит копаться в настройках сервака... Вот если бы как-то динамически подгружать свой реалм во время запуска проги и юзать его на протяжении работы моей проги... Это сообщение отредактировал(а) steals - 30.7.2008, 19:16 |
|||
|
||||
vzf |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: 2 Всего: 5 |
Что касается веб-приложений, обычно пишется свой логин-модуль и principals , эти реализации указываются в настройках сервера приложения. Всем остальным уже управляет контейнер и декларативное разграничение доступа нормально работает. Что касается ejb - не знаю, но думаю должно-быть что-то похожее.
В томкате, например, есть JAASRealm. Он позволяет использовать свой логин-модуль и свои principals. В документации к томкату довольно неплохо написано как его настроить. Вообще вопрос настройки JAAS для аутентификации/авторизации в веб-приложениях не раз уже здесь обсуждали. Посмотри поиском. Вот книгу приводили: http://jaasbook.com/ Неплохая книга. Там рассказывается про JAAS и говорится как раз, как прикрутить свою реализацию логин-модуля к Tomcat'у при помощи его JAASRealm. Посмотри, может поможет. --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
В Security FAQ для GlassFish имеется такое сообщение:
Попробуйте поискать примеры по названию классов |
|||
|
||||
stron |
|
|||
![]() Консультант ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1654 Регистрация: 17.7.2003 Где: Питер Репутация: нет Всего: 36 |
Сделай 2 модуля:
1. JAAS login модуль 2. EJB, который будет работать с базой и отвечать за вытягивание оттуда пользователей. Через этом же модуль можно админить пользователей. JAAS login модуль будет коннектиться к EJB, а тот уже к базе. -------------------- подписи нет |
|||
|
||||
mturetskiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 29.8.2008 Репутация: нет Всего: нет |
Столкнулся с той же проблемой. Написал свои LoginModule, CustomRealm, сконфигурировал их в конфиге Glassfish-a. Логин модуль срабатывает, связывается с Realm-ом для проверки данных, в итоге login проходит успешно. Однако не понятно, что надо сделать, что бы в EJB, которые я буду использовать дальше попадала эта инфа?
Насколько я понимаю эти данные попадают в EJB при создании с SecurityContext-ом. Причём этот контекст берётся из SecurityContext'a web-контейнера. Пробовал самостоятельно создавать Subject, заполнять его данными о пользователе и на его основе создавать SecurityContext, устанавливая его текущим. И это помогало. Вот только как это надо делать на самом деле? Может быть кто то знает? |
|||
|
||||
dimka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.6.2006 Где: Беларусь Репутация: нет Всего: нет |
Может так:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |