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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring security and EJB как настроить? 
:(
    Опции темы
acvilon
  Дата 19.11.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Товарищи. Подскажите как настроить авторизацию и аутентификацию в Spring Security через ejb? 
PM MAIL ICQ   Вверх
acvilon
  Дата 19.11.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Опишу ситуацию поподробнее:
Я разрабатываю приложение, web часть пишется с использованием спринга. Backend часть пишется на ejb. В конфиг спринга настраиваю для инжекта ejb. Теперь вопрос: Как настроить авторизацию и аутентификацию с использованием spring security через ejb. Т.к. напрямую web часть не может лазить в базу. Товарищи, помогите пожалуйста!!! 
PM MAIL ICQ   Вверх
MisterCleric
Дата 19.11.2009, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



привет. Мне что-то лень все раскладывать по полочкам: надеюсь по английски читать можешь. Наведу на мысль цитатой из Spring Security Reference
Цитата

5.3.3. AuthenticationProvider

The last player in the Spring Security authentication process is an AuthenticationProvider. Quite simply, it is responsible for taking an Authentication request object and deciding whether or not it is valid. The provider will either throw an exception or return a fully populated Authentication object. Remember our good friends, UserDetails and UserDetailsService? If not, head back to the previous section and refresh your memory. Most AuthenticationProviders will ask a UserDetailsService to provide a UserDetails object. As mentioned earlier, most application will provide their own UserDetailsService, although some will be able to use the JDBC or in-memory implementation that ships with Spring Security. The resultant UserDetails object - and particularly the GrantedAuthority[]s contained within the UserDetails object - will be used when building the fully populated Authentication object.

After the authentication mechanism receives back the fully-populated Authentication object, it will deem the request valid, put the Authentication into the SecurityContextHolder, and cause the original request to be retried (step seven above). If, on the other hand, the AuthenticationProvider rejected the request, the authentication mechanism will ask the user agent to retry (step two above).


Если в двух словах, я бы посмотрел в сторону DaoAuthenticationProvider и на свою имплементацию UserDetailsService, который уже и будет делать вызов бизнес-метода логина на твоем EJB и строить UserDetails по тому, что ты вернешь в этом методе.
Но тут, конечно, может всплыть такой вопрос: нужен ли потом тебе этот принципал на уровне EJB при дальнейших операциях: sessionContext.getCallerPrincipal?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
acvilon
  Дата 20.11.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

MisterCleric, Мне что-то лень все раскладывать по полочкам.


Был бы очень благодарен, если бы ты по шагам написать, что примерно надо сделать. Spring Security Reference - надо конечно почитать, но как-то в доке хреновенько все описано. Меня вот пока интересует аутентификацию юзеров. Потом, через некоторое врем я заинтересуюсь авторизацией.

Заранее спс.  smile 
PM MAIL ICQ   Вверх
MisterCleric
Дата 20.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



 smile Не, так не годиться. Если честно, то я его учил как раз по этому референсу и уже два проекта в эксплуатацию со Spring Security пошло.
Надо почитать и посмотреть примеры, что идут с дистрибутивом.
Если умеешь с WEB-уровня вызывать EJB, то проблем у тебя не должно составить.
Надо сначала что-то написать и привести тут код, где не сходится: все за тебя мы делать не будем


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
acvilon
  Дата 20.11.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ладно-ладно. Все я и не просил. smile Будем-с читать, просто интересно много ли надо переписывать для получения нужного результата?!
PM MAIL ICQ   Вверх
MisterCleric
Дата 20.11.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



надо токо реализовать свой UserDetailsService


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
acvilon
  Дата 20.11.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А еще такой вопрос, лучше читать доку сразу по версии 3.0 или предыдущую? Третья вроде еще не вышла.
PM MAIL ICQ   Вверх
MisterCleric
Дата 20.11.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



у меня 2.0.5


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
acvilon
  Дата 24.11.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MisterCleric, я тут поразбирался. Возникло много вопросов.
1) Форма логина сабмититься аяксом, в ответ также ожидается ajax(ответ - урл на который следует перейти). Я так понимаю для такого решения придется переписать AuthenticationProcessingFilter?

2) UserName у меня может быть логином или email. То есть аутентифицироваться можно и по логину, и по email'у. Насколько я понял, надо имплементировать UserDetails и соответственно добавить нужные поля, конечно странно что в стандартном интерфейсе подразумевается только username! Также придется написать свой UserDetailsService. Я пока не разобрался хватит ли DaoAuthenticationProvider или придется отнаследоваться от него и переписать то, что надо. 

Что можешь посоветовать?  smile 
PM MAIL ICQ   Вверх
MisterCleric
Дата 24.11.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Привет. Попробую ответить.
1. То что у тебя аякс, ничего не меняет: все-равно на сервер уезжает HTTP-запрос. У тебя должна быть форма структуры
Код

<input name='j_username'/>
<input type='password' name='j_password'/>


Ну и аяксовый запрос должен отправлять на УРЛ j_spring_security_check
Правда, действительно придется посмотреть на AuthenticationProcessingFilter, так как там возможны редиректы при неуспехе аутентификации...
2. То что у тебя UserName может быть и тем и другим ничего не меняет. Spring принимает из реквеста указанные выше параметры. Потом они передаются в AuthenticationManager, который отделегирует твоему AuthenticationProvider для получения UserDetails.
3. Все остальное как определить пользователя - по логину или email - это ты уже решаешь на уровне своего UserDetailsService

Немного фантазии и смелости - и усе получится


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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