| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Spring security and EJB как настроить? |
| Автор: acvilon 19.11.2009, 16:53 |
| Товарищи. Подскажите как настроить авторизацию и аутентификацию в Spring Security через ejb? |
| Автор: acvilon 19.11.2009, 22:55 |
| Опишу ситуацию поподробнее: Я разрабатываю приложение, web часть пишется с использованием спринга. Backend часть пишется на ejb. В конфиг спринга настраиваю для инжекта ejb. Теперь вопрос: Как настроить авторизацию и аутентификацию с использованием spring security через ejb. Т.к. напрямую web часть не может лазить в базу. Товарищи, помогите пожалуйста!!! |
| Автор: MisterCleric 19.11.2009, 23:31 | ||
привет. Мне что-то лень все раскладывать по полочкам: надеюсь по английски читать можешь. Наведу на мысль цитатой из Spring Security Reference
Если в двух словах, я бы посмотрел в сторону DaoAuthenticationProvider и на свою имплементацию UserDetailsService, который уже и будет делать вызов бизнес-метода логина на твоем EJB и строить UserDetails по тому, что ты вернешь в этом методе. Но тут, конечно, может всплыть такой вопрос: нужен ли потом тебе этот принципал на уровне EJB при дальнейших операциях: sessionContext.getCallerPrincipal? |
| Автор: acvilon 20.11.2009, 15:58 | ||
Был бы очень благодарен, если бы ты по шагам написать, что примерно надо сделать. Spring Security Reference - надо конечно почитать, но как-то в доке хреновенько все описано. Меня вот пока интересует аутентификацию юзеров. Потом, через некоторое врем я заинтересуюсь авторизацией. Заранее спс. |
| Автор: MisterCleric 20.11.2009, 16:07 |
| Надо почитать и посмотреть примеры, что идут с дистрибутивом. Если умеешь с WEB-уровня вызывать EJB, то проблем у тебя не должно составить. Надо сначала что-то написать и привести тут код, где не сходится: все за тебя мы делать не будем |
| Автор: acvilon 20.11.2009, 18:17 |
| Ладно-ладно. Все я и не просил. |
| Автор: MisterCleric 20.11.2009, 18:20 |
| надо токо реализовать свой UserDetailsService |
| Автор: acvilon 20.11.2009, 18:28 |
| А еще такой вопрос, лучше читать доку сразу по версии 3.0 или предыдущую? Третья вроде еще не вышла. |
| Автор: MisterCleric 20.11.2009, 18:32 |
| у меня 2.0.5 |
| Автор: acvilon 24.11.2009, 01:48 |
| MisterCleric, я тут поразбирался. Возникло много вопросов. 1) Форма логина сабмититься аяксом, в ответ также ожидается ajax(ответ - урл на который следует перейти). Я так понимаю для такого решения придется переписать AuthenticationProcessingFilter? 2) UserName у меня может быть логином или email. То есть аутентифицироваться можно и по логину, и по email'у. Насколько я понял, надо имплементировать UserDetails и соответственно добавить нужные поля, конечно странно что в стандартном интерфейсе подразумевается только username! Также придется написать свой UserDetailsService. Я пока не разобрался хватит ли DaoAuthenticationProvider или придется отнаследоваться от него и переписать то, что надо. Что можешь посоветовать? |
| Автор: MisterCleric 24.11.2009, 11:14 | ||
| Привет. Попробую ответить. 1. То что у тебя аякс, ничего не меняет: все-равно на сервер уезжает HTTP-запрос. У тебя должна быть форма структуры
Ну и аяксовый запрос должен отправлять на УРЛ j_spring_security_check Правда, действительно придется посмотреть на AuthenticationProcessingFilter, так как там возможны редиректы при неуспехе аутентификации... 2. То что у тебя UserName может быть и тем и другим ничего не меняет. Spring принимает из реквеста указанные выше параметры. Потом они передаются в AuthenticationManager, который отделегирует твоему AuthenticationProvider для получения UserDetails. 3. Все остальное как определить пользователя - по логину или email - это ты уже решаешь на уровне своего UserDetailsService Немного фантазии и смелости - и усе получится |