Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EJB & JAAS 
:(
    Опции темы
steals
Дата 27.7.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Доброго времени суток.

Имеется задача написать аутентификацию/авторизацию для проги. Логика программы заключена в EJB 3.0. Список пользователей хранится в БД(postgresql). Запускается прга на аппсервере - glassfish 2

Для решения данной задачи было выбрано использовать JAAS. Написал свой LoginModule(почти). Вот только столкнулся с одной проблеммой, никак не могу получить ничего из базы используя JPA технологию. 

Существует ли какая-то возможность это реализовать или надо использовать методы по старинке(вручную коннектится к бд с помощью jdbc) ?

Заранее спасибо.

З.ы. хорошие статьи по реализации авторизации для ejb-компонентов приветствуются.
PM MAIL ICQ   Вверх
Ulysses4j
Дата 27.7.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW   Вверх
steals
Дата 28.7.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Проблема была в том, что для определения EntityManager использовалась аннотация @PersistenceContext. Так вот в LoginModule по этой аннотации ничего не инжектилось. Заменил на :
Код

   EntittyManagerFactory emg =Persistence.createEntityManagerFactory("MyPU");
   EntityManager em = emf.createEntityManager();

и все в принципе заработало.

Теперь надо курить, как это все связать с авторизацией в ejb.
PM MAIL ICQ   Вверх
man_without_face
Дата 28.7.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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/
PM MAIL   Вверх
steals
Дата 29.7.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Что-то я никак не пойму. Можно ли связать Атунтификацию через JAAS(собственный логин модуль) и авторизацию через декларативное описание в web.xml, ejb-jar.xml ?
PM MAIL ICQ   Вверх
man_without_face
Дата 29.7.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 1.4.2008

Репутация: нет
Всего: 1



вроде нет. если не изменяет память, нужно копать xml'ники в серверах приложений (JBoss, Tomcat). Кстати буки же есть по JAAS. ТАм наверняка всё написано.
PM MAIL   Вверх
steals
Дата 29.7.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Вот и я все больше рпихожу к выводу, что не совмещаются эти технологии... :(
Хм... а через что тогда обычно люди делают такого рода авторизацию?

Уже кучу инфы перечитал в инете по джасу, но возможно я чего-то недопонимаю...
PM MAIL ICQ   Вверх
w1nd
Дата 30.7.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 7
Всего: 54



Если вы хотите получить собственную реализацию авторизации и аутентификации для EJB, то вам следует обратить внимание на спецификацию JSR 115, она же JAAC, она же Java Authorization Contract for Containers. Но самое главное - документация того конкретного сервера, который хотите использовать. Необходимый вам функционал выходит за рамки EJB и JEE и у всех реализован по своему.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
steals
Дата 30.7.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Ну нужна пока авторизация и аутентификация для JSF, но в будующем понадобиться и для EJB.
Сейчас делаю по http://developers.sun.com/appserver/refere...tion/index.html думаю поможет.
PM MAIL ICQ   Вверх
mbasil
Дата 30.7.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Совершенно справедливо было отмечено, что у каждого сервера по своему.
Я довольно долго бился в Tomcat для того, чтобы заставить сервер принимать
специфическую JAAS аутентификацию. Думаю дело не в том, чтобы аутентифицировать,
а в том, чтобы заставить сервер принять эту аутентификацию, после этого
декларативная авторизация работает нормально.

Кстати Sun пишет, что аутентификация web контейнером должна приниматься
EJB контейнером, так что в этой части (с учетом сказанного выше) сомнений
быть не должно.

Это сообщение отредактировал(а) mbasil - 30.7.2008, 12:52
PM MAIL   Вверх
steals
Дата 30.7.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Используется glassfish v2u2 как аппликейшен сервер.

Цитата(mbasil @  30.7.2008,  12:20 Найти цитируемый пост)
Думаю дело не в том, чтобы аутентифицировать,а в том, чтобы заставить сервер принять эту аутентификацию, после этогодекларативная авторизация работает нормально.


Вот в том-то и загвоздка. Когда я делаю свой лоигн модуль и ручками создаю логин контекст с моим модулем, потом вызываю метод логин, то все проходит отлично (аутентификация работает). Но получается что и дальше рулить авторизацией мне надо все руками. Вот в этом и затык...


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

Это сообщение отредактировал(а) steals - 30.7.2008, 19:16
PM MAIL ICQ   Вверх
vzf
Дата 31.7.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: 2
Всего: 5



Что касается веб-приложений, обычно пишется свой логин-модуль и principals , эти реализации указываются в настройках сервера приложения. Всем остальным уже управляет контейнер и декларативное разграничение доступа нормально работает.  Что касается ejb - не знаю, но думаю должно-быть что-то похожее. 

В томкате, например, есть JAASRealm. Он позволяет использовать свой логин-модуль и свои principals. В документации к томкату довольно неплохо написано как его настроить. Вообще вопрос настройки JAAS для аутентификации/авторизации в веб-приложениях не раз уже здесь обсуждали. Посмотри поиском. Вот книгу приводили:

http://jaasbook.com/

Неплохая книга. Там рассказывается про JAAS и говорится как раз, как прикрутить свою реализацию логин-модуля к Tomcat'у при помощи его JAASRealm. Посмотри, может поможет.
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
mbasil
Дата 31.7.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



В Security FAQ для GlassFish имеется такое сообщение:

Цитата

The GlassFish authentication subsystem is built upon realm and the standard Java JAAS framework - you can write your own realm and JAAS login module, and plug it into GlassFish. In the current implementation of GlassFish, your realm and JAAS module needs to be derived from com.sun.appserv.security.AppservRealm and com.sun.appserv.security.AppservPasswordLoginModule respectively. You can configure a realm and JAAS module by modifying the config/domain.xml file (adding your realm configuration information there) and config/login.conf file (adding your login module there) respectively.


Попробуйте поискать примеры по названию классов
PM MAIL   Вверх
stron
Дата 31.7.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Консультант
***


Профиль
Группа: Комодератор
Сообщений: 1654
Регистрация: 17.7.2003
Где: Питер

Репутация: нет
Всего: 36



Сделай 2 модуля:
1. JAAS login модуль
2. EJB, который будет работать с базой и отвечать за вытягивание оттуда пользователей. Через этом же модуль можно админить пользователей.
JAAS login модуль будет коннектиться к EJB, а тот уже к базе.


--------------------
подписи нет
PM ICQ   Вверх
mturetskiy
Дата 29.8.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.8.2008

Репутация: нет
Всего: нет



Столкнулся с той же проблемой. Написал свои LoginModule, CustomRealm, сконфигурировал их в конфиге Glassfish-a.  Логин модуль срабатывает, связывается с Realm-ом для проверки данных, в итоге login проходит успешно. Однако не понятно, что надо сделать, что бы в EJB, которые я буду использовать дальше попадала эта инфа?
Насколько я понимаю эти данные попадают в EJB при создании с SecurityContext-ом. Причём этот контекст берётся из SecurityContext'a web-контейнера. Пробовал самостоятельно создавать Subject, заполнять его данными о пользователе и на его основе создавать SecurityContext, устанавливая его текущим. И это помогало. 
Вот только как это надо делать на самом деле? Может быть кто то знает?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.