|
|
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста. Нужен Security framework для серверного приложения, которое обрабатывает запросы от различных клиентов - REST, Web. То есть нужно закрывать логином-паролем уровень Service, видимо так. Пытался разобраться с Spring Security. Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring. Решил установить Apache-Shiro. Пытаюсь прописать права в shiro.ini файле, но его почему-то не читает система. Нормального полного примера Shiro + Spring не нашел. Какие еще есть варианты security и session management? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2013, 20:55:29 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
что там со спрингом не знаю, для себя реализовал секурити систему с @Interceptors, которые входят в ejb, если кратко то аннотируются методы ejb бинов Код: java 1. 2. 3. 4. интерсептор перехватывает вызов метода, что то там проверяет и делает, с ними же реализовал кеш и разные штуки. при выдаче новых прав, ролей и тд не нужно передеплоивать сервак. сначала хотел заюзать встроенную систему в аппсервер @DeclareRoles, @RolesAllowed, но при изменениях пришлось бы редактировать xml и передплоивать сервак.. скукота вобщем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2013, 21:26:32 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
oson... Пытался разобраться с Spring Security... Странно, мне всегда нравилась документация у Спринга, а потому решил погуглить (у самого до Spring Security руки не доходят пока :(). Нашел туториал и сэмплы . osonБолее запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.Это поначалу, мне JEEшный JSR-196 тоже мозг выносил поначалу :) Незнание JAAS тоже вносило свою лепту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2013, 22:51:00 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
osonПытался разобраться с Spring Security. Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring. "Чего на зеркало пенять, коли ..." Крайне лаконичная и несложная в настройке система, особенно если не вдаваться в дебри кастомных фильтров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2013, 22:51:05 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Ну если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам? Все равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2013, 23:39:29 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
osonНу если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам?Если у Вас несложное приложение, то не парьтесь, а сделайте свою security: форма входа, фильтр и т.д. И, кстати, REST - это обычный HTTP-запрос, ничем не отличается от всех прочих запросов.авторВсе равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security?Spring Security, впрочем как и другие подобные фреймворки, помогает когда есть сложное разграничения прав доступа, множество способов аутентификации. В простых случаях проще сделать свою системку. Но главное не перемешивать логику юезопасности с бизнес-логикой. И будет Вам счастье ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 00:04:00 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
То есть Spring Security (ну и подобные, типа Apache Shiro) удобен для случаев, когда много ролей и для каждой свои варианты доступа к тем или другим ресурсам. Чтобы не делать везде проверки программно, прописываем в одном конфиге какие роли к каким url имеют доступ, ну и аннотацией можно определить доступ к методу в сервис лайер. И тут удобно, что сделал конфиг один раз, а потом олько или запись добавляешь туда, или аннотацию ставишь. В этом и мощь Spring Security. А если мне надо настроить доступ от различных клиентов к моему ресурсу, но ролей та немного, правило доступа одинаковое, то проще самому сделать функциональность, чтобы получать от клиента некий tokien с логином-паролем, проверять его, и если ок - инициализировать session scoped объект, складывать туда то, что относится к данному клиенту, и потом находить этот объект при каждом следующем запросе от этого клиента и так поддерживать его сессию (кстати - а где хранить этот объект?) То есть в такой задаче как Spring Security (или Apache Shiro) ничем и не поможет - его задача не в том. Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 00:17:23 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
osonкстати - а где хранить этот объект?В сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам. В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 00:32:24 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
osonудобен для случаев, когда много ролей и я думаю, это и ечсть стандарт - через Роли. И защищаются - рессурсы url. Если у тебя индивидуальный клиент, то проще через куки. Т.к. ролей нету. Есть только настройки Паши и Маши. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 09:52:35 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Ну, так огульно тоже не надо - GrantedAuthority никто не отменял. Просто поддержка авторизации и ролей "из коробки" действительно заточена под веб, но реализовать кастомное разделение на роли совсем несложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 13:44:24 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
WGAВ сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам. В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать... Бин со скоп session можно создать конечно. Ну как в общем это работать должно? Например клиент на Андроид, формирует объект AuthorizationTokien, в который записывает логин и пароль. Этот объект передается как xml и попадает на мой сервер. На сервере создается бин со скоп session, который содержит данные для этого клиента, для начала сам этот AuthorizationTokien. Затем клиент делает второй запрос, содержащий тот же AuthorizationTokien. Сервер получает этот второй запрос и должен найти тот самый бин в session scope. Как он это делает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 22:24:10 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Механизм создания сессии уже реализован в контейнере Spring или App сервере. Но если я должен создать сессию на основании полученного tokien то это надо создавать вручную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 23:15:50 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
oson, Непонятно. Чем тебе больше нравится слово Токен чем слова Кука на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2013, 23:19:10 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Та мне они все нравятся. Только я не пойму, как организовать работу с сессией. Когда веб - то там все автоматом, сессия поднимается и привязывается к конкретному заходу через логин форму. А вот что делать если это клиент типа REST? Например хотел бы я использовать Apache Shiro. Какая последовательность? Отсылает клиент на Андроиде запрос, в котором передает пару логин-пароль. Сервер распознает, что такой логин в системе есть и пароль правильный. Сервер создает сессию. У сессии есть id. Сервер высылает этот id на Android. Далее Android хочет продолжить работу и высылает запрос, в котором содержится этот id сессии. Сервер получает этот запрос, читает id сессии и теперь он должен найти у себя эту сессию по ее id. Вопрос - где он ищет эту сессию? То есть как искать объект в сессии я знаю. А как искать саму сессию - я не знаю, потому что это для веб приложений всегда происходит автоматом. Где эта сессия обитает и как ее искать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 13:37:32 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
oson Где эта сессия обитает и как ее искать?Объект HttpSession можно получить через HttpServletRequest .getSession(). В REST-клиентах достучаться к сессии можно заинжектив (увы, не знаю как перевести) с аннотацией @Context . Почитайте про сервлеты. Как бы без знания спецификации сервлетов вообще не рекомендуется приступать к веб-программированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 14:57:55 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
oson, не так: - в сервлете есть Код: java 1. 2. при вызове там уже всё есть - инфа о куках с клиента. ВИ: - вызов ослика андроида http сервлета. - если ты в куку записал Петя=1234 то она тебе автоматом придёт с кукой в классе сессия. - и ты узнал Петю. Остальное offtop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 16:17:08 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Petro123oson, не так: - в сервлете есть Код: java 1. 2. при вызове там уже всё есть - инфа о куках с клиента. ВИ: - вызов ослика андроида http сервлета. - если ты в куку записал Петя=1234 то она тебе автоматом придёт с кукой в классе сессия. - и ты узнал Петю. Остальное offtopА зачем писАть какую-ту левую куку, если контейнер сервлетов отлично сам запишет JSESSIONID при открытии сессии? Тогда останется просто проверить наличие атрибута в сессии, проставленного при логине (проверке "токиена авторизации" :)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 18:14:45 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
WGA, Да. Кука следующий шаг чтобы запомнить Васю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 22:47:48 |
|
||
|
Security framework
|
|||
|---|---|---|---|
|
#18+
Документация по 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) - так чтоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2013, 19:19:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38237443&tid=2129472]: |
0ms |
get settings: |
18ms |
get forum list: |
29ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
66ms |
get topic data: |
24ms |
get forum data: |
6ms |
get page messages: |
115ms |
get tp. blocked users: |
3ms |
| others: | 332ms |
| total: | 607ms |

| 0 / 0 |
