Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Security framework / 19 сообщений из 19, страница 1 из 1
22.04.2013, 20:55:29
    #38235692
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Подскажите пожалуйста.
Нужен Security framework для серверного приложения, которое обрабатывает запросы от различных клиентов - REST, Web.
То есть нужно закрывать логином-паролем уровень Service, видимо так.
Пытался разобраться с Spring Security.
Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.
Решил установить Apache-Shiro. Пытаюсь прописать права в shiro.ini файле, но его почему-то не читает система.
Нормального полного примера Shiro + Spring не нашел.
Какие еще есть варианты security и session management?
Спасибо.
...
Рейтинг: 0 / 0
22.04.2013, 21:26:32
    #38235706
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
что там со спрингом не знаю, для себя реализовал секурити систему с @Interceptors, которые входят в ejb, если кратко то
аннотируются методы ejb бинов

Код: java
1.
2.
3.
4.
  @Interceptors({ResponseHeader.class, CacheController.class, AccessController.class})
  public Response getEventListByName(@PathParam("name") String name) {
...
}



интерсептор перехватывает вызов метода, что то там проверяет и делает, с ними же реализовал кеш и разные штуки.
при выдаче новых прав, ролей и тд не нужно передеплоивать сервак.
сначала хотел заюзать встроенную систему в аппсервер @DeclareRoles, @RolesAllowed, но при изменениях пришлось бы редактировать xml и передплоивать сервак.. скукота вобщем
...
Рейтинг: 0 / 0
22.04.2013, 22:51:00
    #38235772
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
oson...
Пытался разобраться с Spring Security...
Странно, мне всегда нравилась документация у Спринга, а потому решил погуглить (у самого до Spring Security руки не доходят пока :(). Нашел туториал и сэмплы .
osonБолее запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.Это поначалу, мне JEEшный JSR-196 тоже мозг выносил поначалу :) Незнание JAAS тоже вносило свою лепту.
...
Рейтинг: 0 / 0
22.04.2013, 22:51:05
    #38235773
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
osonПытался разобраться с Spring Security.
Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.
"Чего на зеркало пенять, коли ..."
Крайне лаконичная и несложная в настройке система, особенно если не вдаваться в дебри кастомных фильтров.
...
Рейтинг: 0 / 0
22.04.2013, 23:39:29
    #38235807
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Ну если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам?
Все равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security?
...
Рейтинг: 0 / 0
23.04.2013, 00:04:00
    #38235830
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
osonНу если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам?Если у Вас несложное приложение, то не парьтесь, а сделайте свою security: форма входа, фильтр и т.д. И, кстати, REST - это обычный HTTP-запрос, ничем не отличается от всех прочих запросов.авторВсе равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security?Spring Security, впрочем как и другие подобные фреймворки, помогает когда есть сложное разграничения прав доступа, множество способов аутентификации. В простых случаях проще сделать свою системку. Но главное не перемешивать логику юезопасности с бизнес-логикой. И будет Вам счастье )
...
Рейтинг: 0 / 0
23.04.2013, 00:17:23
    #38235846
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
То есть Spring Security (ну и подобные, типа Apache Shiro) удобен для случаев, когда много ролей и для каждой свои варианты доступа к тем или другим ресурсам. Чтобы не делать везде проверки программно, прописываем в одном конфиге какие роли к каким url имеют доступ, ну и аннотацией можно определить доступ к методу в сервис лайер. И тут удобно, что сделал конфиг один раз, а потом олько или запись добавляешь туда, или аннотацию ставишь. В этом и мощь Spring Security.
А если мне надо настроить доступ от различных клиентов к моему ресурсу, но ролей та немного, правило доступа одинаковое, то проще самому сделать функциональность, чтобы получать от клиента некий tokien с логином-паролем, проверять его, и если ок - инициализировать session scoped объект, складывать туда то, что относится к данному клиенту, и потом находить этот объект при каждом следующем запросе от этого клиента и так поддерживать его сессию (кстати - а где хранить этот объект?)
То есть в такой задаче как Spring Security (или Apache Shiro) ничем и не поможет - его задача не в том. Правильно?
...
Рейтинг: 0 / 0
23.04.2013, 00:32:24
    #38235853
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
osonкстати - а где хранить этот объект?В сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам.
В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать...
...
Рейтинг: 0 / 0
23.04.2013, 09:52:35
    #38236046
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
osonудобен для случаев, когда много ролей и
я думаю, это и ечсть стандарт - через Роли.
И защищаются - рессурсы url.
Если у тебя индивидуальный клиент, то проще через куки. Т.к. ролей нету. Есть только настройки Паши и Маши.
imho
...
Рейтинг: 0 / 0
23.04.2013, 13:44:24
    #38236545
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Ну, так огульно тоже не надо - GrantedAuthority никто не отменял. Просто поддержка авторизации и ролей "из коробки" действительно заточена под веб, но реализовать кастомное разделение на роли совсем несложно.
...
Рейтинг: 0 / 0
23.04.2013, 22:24:10
    #38237406
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
WGAВ сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам.
В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать...

Бин со скоп session можно создать конечно.
Ну как в общем это работать должно? Например клиент на Андроид, формирует объект AuthorizationTokien, в который записывает логин и пароль. Этот объект передается как xml и попадает на мой сервер. На сервере создается бин со скоп session, который содержит данные для этого клиента, для начала сам этот AuthorizationTokien.
Затем клиент делает второй запрос, содержащий тот же AuthorizationTokien. Сервер получает этот второй запрос и должен найти тот самый бин в session scope. Как он это делает?
...
Рейтинг: 0 / 0
23.04.2013, 23:15:50
    #38237440
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Механизм создания сессии уже реализован в контейнере Spring или App сервере. Но если я должен создать сессию на основании полученного tokien то это надо создавать вручную?
...
Рейтинг: 0 / 0
23.04.2013, 23:19:10
    #38237443
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
oson,
Непонятно. Чем тебе больше нравится слово Токен чем слова Кука на клиенте?
...
Рейтинг: 0 / 0
24.04.2013, 13:37:32
    #38238138
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Та мне они все нравятся. Только я не пойму, как организовать работу с сессией.
Когда веб - то там все автоматом, сессия поднимается и привязывается к конкретному заходу через логин форму.
А вот что делать если это клиент типа REST?

Например хотел бы я использовать Apache Shiro.
Какая последовательность?
Отсылает клиент на Андроиде запрос, в котором передает пару логин-пароль.
Сервер распознает, что такой логин в системе есть и пароль правильный.
Сервер создает сессию. У сессии есть id.
Сервер высылает этот id на Android.
Далее Android хочет продолжить работу и высылает запрос, в котором содержится этот id сессии.
Сервер получает этот запрос, читает id сессии и теперь он должен найти у себя эту сессию по ее id.
Вопрос - где он ищет эту сессию?
То есть как искать объект в сессии я знаю. А как искать саму сессию - я не знаю, потому что это для веб приложений всегда
происходит автоматом.
Где эта сессия обитает и как ее искать?
...
Рейтинг: 0 / 0
24.04.2013, 14:57:55
    #38238343
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
oson Где эта сессия обитает и как ее искать?Объект HttpSession можно получить через HttpServletRequest .getSession(). В REST-клиентах достучаться к сессии можно заинжектив (увы, не знаю как перевести) с аннотацией @Context .

Почитайте про сервлеты. Как бы без знания спецификации сервлетов вообще не рекомендуется приступать к веб-программированию.
...
Рейтинг: 0 / 0
24.04.2013, 16:17:08
    #38238516
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
oson,
не так:
- в сервлете есть
Код: java
1.
2.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, 	
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 


при вызове там уже всё есть - инфа о куках с клиента.
ВИ:
- вызов ослика андроида http сервлета.
- если ты в куку записал Петя=1234 то она тебе автоматом придёт с кукой в классе сессия.
- и ты узнал Петю.
Остальное offtop
...
Рейтинг: 0 / 0
24.04.2013, 18:14:45
    #38238841
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Petro123oson,
не так:
- в сервлете есть
Код: java
1.
2.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, 	
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 


при вызове там уже всё есть - инфа о куках с клиента.
ВИ:
- вызов ослика андроида http сервлета.
- если ты в куку записал Петя=1234 то она тебе автоматом придёт с кукой в классе сессия.
- и ты узнал Петю.
Остальное offtopА зачем писАть какую-ту левую куку, если контейнер сервлетов отлично сам запишет JSESSIONID при открытии сессии? Тогда останется просто проверить наличие атрибута в сессии, проставленного при логине (проверке "токиена авторизации" :)).
...
Рейтинг: 0 / 0
24.04.2013, 22:47:48
    #38239165
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
WGA,
Да.
Кука следующий шаг чтобы запомнить Васю.
...
Рейтинг: 0 / 0
25.04.2013, 19:19:31
    #38240611
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Security framework
Документация по Apache shiro.
Тут у них правда свой объект session, который в случае веб приложения связан с httpsession.
http://shiro.apache.org/session-management.html

The power of the SessionDAO is that you can implement this interface to communicate with any data store you wish. This means your session data can reside in memory, on the file system, in a relational database or NoSQL data store, or any other location you need

То есть сессию предлагается хранить как сущность например в базе, и когда приходит запрос с REST клиента например, то находиь для него сессию в виде findById(Long sessionid) - так чтоли?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Security framework / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]