powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Security framework
19 сообщений из 19, страница 1 из 1
Security framework
    #38235692
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста.
Нужен Security framework для серверного приложения, которое обрабатывает запросы от различных клиентов - REST, Web.
То есть нужно закрывать логином-паролем уровень Service, видимо так.
Пытался разобраться с Spring Security.
Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.
Решил установить Apache-Shiro. Пытаюсь прописать права в shiro.ini файле, но его почему-то не читает система.
Нормального полного примера Shiro + Spring не нашел.
Какие еще есть варианты security и session management?
Спасибо.
...
Рейтинг: 0 / 0
Security framework
    #38235706
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что там со спрингом не знаю, для себя реализовал секурити систему с @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
Security framework
    #38235772
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
oson...
Пытался разобраться с Spring Security...
Странно, мне всегда нравилась документация у Спринга, а потому решил погуглить (у самого до Spring Security руки не доходят пока :(). Нашел туториал и сэмплы .
osonБолее запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.Это поначалу, мне JEEшный JSR-196 тоже мозг выносил поначалу :) Незнание JAAS тоже вносило свою лепту.
...
Рейтинг: 0 / 0
Security framework
    #38235773
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
osonПытался разобраться с Spring Security.
Более запутанным сделать наверное было бы трудно. Ничего толком не заработало, хотя вся система работает на Spring.
"Чего на зеркало пенять, коли ..."
Крайне лаконичная и несложная в настройке система, особенно если не вдаваться в дебри кастомных фильтров.
...
Рейтинг: 0 / 0
Security framework
    #38235807
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам?
Все равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security?
...
Рейтинг: 0 / 0
Security framework
    #38235830
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
osonНу если сделать форму по умолчанию, то наверное просто. А если серверная часть принимает запросы по REST например от разных типов клиентов, то чем поможет Spring Security в плане допуска к определенным сервис методам?Если у Вас несложное приложение, то не парьтесь, а сделайте свою security: форма входа, фильтр и т.д. И, кстати, REST - это обычный HTTP-запрос, ничем не отличается от всех прочих запросов.авторВсе равно должен передаваться какой то authorization tokien, который содержит например login+password, и если такие есть в бд, то создается сессия и объект в ней, который будет определять этого клиента. Пришел следующий запрос от того же клиента - ищем в сессии объект по authorization tokien и определяем, что это тот же клиент. Примерно так. Как тут может помочь Spring Security?Spring Security, впрочем как и другие подобные фреймворки, помогает когда есть сложное разграничения прав доступа, множество способов аутентификации. В простых случаях проще сделать свою системку. Но главное не перемешивать логику юезопасности с бизнес-логикой. И будет Вам счастье )
...
Рейтинг: 0 / 0
Security framework
    #38235846
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть Spring Security (ну и подобные, типа Apache Shiro) удобен для случаев, когда много ролей и для каждой свои варианты доступа к тем или другим ресурсам. Чтобы не делать везде проверки программно, прописываем в одном конфиге какие роли к каким url имеют доступ, ну и аннотацией можно определить доступ к методу в сервис лайер. И тут удобно, что сделал конфиг один раз, а потом олько или запись добавляешь туда, или аннотацию ставишь. В этом и мощь Spring Security.
А если мне надо настроить доступ от различных клиентов к моему ресурсу, но ролей та немного, правило доступа одинаковое, то проще самому сделать функциональность, чтобы получать от клиента некий tokien с логином-паролем, проверять его, и если ок - инициализировать session scoped объект, складывать туда то, что относится к данному клиенту, и потом находить этот объект при каждом следующем запросе от этого клиента и так поддерживать его сессию (кстати - а где хранить этот объект?)
То есть в такой задаче как Spring Security (или Apache Shiro) ничем и не поможет - его задача не в том. Правильно?
...
Рейтинг: 0 / 0
Security framework
    #38235853
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
osonкстати - а где хранить этот объект?В сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам.
В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать...
...
Рейтинг: 0 / 0
Security framework
    #38236046
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
osonудобен для случаев, когда много ролей и
я думаю, это и ечсть стандарт - через Роли.
И защищаются - рессурсы url.
Если у тебя индивидуальный клиент, то проще через куки. Т.к. ролей нету. Есть только настройки Паши и Маши.
imho
...
Рейтинг: 0 / 0
Security framework
    #38236545
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, так огульно тоже не надо - GrantedAuthority никто не отменял. Просто поддержка авторизации и ролей "из коробки" действительно заточена под веб, но реализовать кастомное разделение на роли совсем несложно.
...
Рейтинг: 0 / 0
Security framework
    #38237406
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAВ сервлетах есть стандартизированный механизм поддержания пользовательской сессии, основанный на куках (JSESSIONID). Читайте спеку по сервлетам.
В принципе, в Spring можно создать бин со scope=session и туда складывать данные о залогиненном пользователе. Но спеку лучше почитать...

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

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

Почитайте про сервлеты. Как бы без знания спецификации сервлетов вообще не рекомендуется приступать к веб-программированию.
...
Рейтинг: 0 / 0
Security framework
    #38238516
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Security framework
    #38238841
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
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
Security framework
    #38239165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGA,
Да.
Кука следующий шаг чтобы запомнить Васю.
...
Рейтинг: 0 / 0
Security framework
    #38240611
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документация по 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
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Security framework
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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