Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / С праздником мужики. Вопрос по JAAS / 25 сообщений из 27, страница 1 из 2
23.02.2013, 19:31:31
    #38163302
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Можно ли прикрутить к JAAS ораклинные таблицы? чтобы кредентиалы проверялись из таблицы, равно как и доступы?
Т.е. при аутентификации сервлет обращается в СУБД там сравнивает пароли, а дальше идет авторизация веб страниц, на которые он может обращатсья также из таблицы?
...
Рейтинг: 0 / 0
23.02.2013, 21:52:14
    #38163372
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82Можно ли прикрутить к JAAS ораклинные таблицы? чтобы кредентиалы проверялись из таблицы, равно как и доступы?
Т.е. при аутентификации сервлет обращается в СУБД там сравнивает пароли, а дальше идет авторизация веб страниц, на которые он может обращатсья также из таблицы?
JAAS на столько общий и абстрактный API, что там можно что угодно прикрутить. Но привязка к БД, по-моему у каждого сервер по-смоему сделана.
GlassFish
http://docs.oracle.com/javaee/6/tutorial/doc/glxgo.html
Tomcat
http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/realm/JDBCRealm.html
...
Рейтинг: 0 / 0
23.02.2013, 22:02:14
    #38163378
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Вот по этой ссылке небольшое упражнение, оно правда про OpenShift, но для примера там показано как сделать JAAS своими руками, база подойдет любая
...
Рейтинг: 0 / 0
25.02.2013, 13:56:37
    #38164676
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Спасибо за отзывы. Картина проясняется.
Есть 2 варианта реализации:
1. Авторизация в oracle и доступ к ресурсам через Гранты СУБД. Но в таком случае возможно ли для каждого пользователя создать одно соединение к базе и соотвественно убивать его при выходе сессии на стороне аппликейшна.
2. Авторизация средствами аппликейшна но база пользователей будет уже не базой реальных пользователей СУБД простой таблицей с паролями и правами. Соотвественно в таком случае для определения прав на те или иные объекты в базе будет написана процедура в СУБД которой необходимо передавать каждый раз при обращении к ресурсам пользователей логин пользователя. Возможна ли такая реализация?

Что предпочтительнее в плане безопасности?
И конечно же в таком случае, случае неиспользования JAAS возникает необходимость ставить фильтры на каждую страницу для определения доступно ти для текущего юзера.

Дайте совет. Спасибо.
...
Рейтинг: 0 / 0
25.02.2013, 15:49:29
    #38165000
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82Что предпочтительнее в плане безопасности?Второе.
Конкретно в пророке "create user" требует, как минимум, логина system.
Конкретно в жар-птице "gsec -add" требуете sysdba.
Даже если предположить, что у вас есть эти права, рулить пользователями базы из веб-приложения - плохая идея.
Так что "второе, плюс set role".
...
Рейтинг: 0 / 0
25.02.2013, 17:44:55
    #38165251
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Ну а если предположить что юзеров будет заводить адекватный админ БД, из аплликейшна будет доступ только к табличкам юзеровским, а заведение пользователей будет проходить под грифом совершенно секретно. :)

Учитывая что при втором варианте в системе уже будет общий пользователь jdbc с правами на инсерт апдейт делете на все таблички, я думаю второй вариант менее защищен, не так ли?
...
Рейтинг: 0 / 0
25.02.2013, 19:18:59
    #38165393
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82Учитывая что при втором варианте в системе уже будет общий пользователь jdbc с правами на инсерт апдейт делете на все таблички, я думаю второй вариант менее защищен, не так ли?"Как закажете".
Наиболее простой и потому типичный вариант: веб-пользователь является владельцем схемы.
В Oracle такому пользователю надо явно выдавать права на создание таблиц и т.п., но права на выбор, изменение записей и удаление записей/объектов у него есть. Как у владельца.
Более сложный, но и более правильный вариант предполагает существование, как минимум, двух пользователей: "владельца" и "работника".
"Владелец" используется для обновления, бэкапа и т.п. служебных вещей.
"Работник" используется веб-приложением. Этому пользователю явно или через роли выдаются права на объекты владельца и защищённость становится ровно такой, как у схемы "пользователи СУБД".
Минусы.
Если требуется прописать стопитцот прав на стопитцот объектов - это придётся сделать;
Каждое подключение придётся начинать магическим заклинанием "alter session set current schema имя_схемы". Как минимум;
Некоторые права нельзя выдать через роль и их придётся назначать явно или (как-то) оборачивать в (хранимые) процедуры;
В разных СУБД будут разные особенности такой двухпользовательской системы.
...
Рейтинг: 0 / 0
25.02.2013, 19:28:14
    #38165405
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Конечно схема будет владелец - для накатывания патчей в субд (имеется ввиду пл скл), и работник инсерт апдейт делете на объекты типа таблицы, плюс екзекьют на процедуры функции и прочее.0
Насчет 100500 прав это не страшно, главное целостность и безопасность системы.

НО опять же, при реализации по второму варианту, где хранить данные? в контексте сессии? В джиндае? в контексте аппликейшна? И каким образом вылавливать текущего пользователя? Писать жава код в пл/скл (из тех же соображений безопаности)? Как определять пользователя?
...
Рейтинг: 0 / 0
25.02.2013, 21:25:06
    #38165553
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Реализовывать безопасность на уровне базы данных при наличии сервера приложений - для этого должны быть веские причины, например, наличие клиентов, имеющих прямой доступ к базе.
Лет 15 назад это было оправдано, поскольку применялась классическая клиент-серверная технология, для современного j2ee приложения - накладненько, имеются другие средства, тот же JAAS.
Это имхо.
...
Рейтинг: 0 / 0
26.02.2013, 08:40:13
    #38165790
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Добрый день, marlis82!

> Есть 2 варианта реализации:
> 1. Авторизация в oracle и доступ к ресурсам через Гранты СУБД. Но в
> таком случае возможно ли для каждого пользователя создать одно
> соединение к базе и соотвественно убивать его при выходе сессии на
> стороне аппликейшна.

Это убивает многие вещи, стандартные для AS- пул коннектов, JMS будет
работать непонятно как и т.п.

> 2. Авторизация средствами аппликейшна но база пользователей будет уже не
> базой реальных пользователей СУБД простой таблицей с паролями и правами.

Да, логично.

> Соотвественно в таком случае для определения прав на те или иные объекты
> в базе будет написана процедура в СУБД которой необходимо передавать
> каждый раз при обращении к ресурсам пользователей логин пользователя.
> Возможна ли такая реализация?

Не надо. На каждую операцию делается @RolesAllowed.
При логине заполняем (есть пример в jboss'е) имена доступных ролей из
таблицы БД.

И далее проверка прав идёт без обращения к БД.

При этом эти же права можно использовать для формирования интерфейса-
т.е. недоступные операции пользователю либо не показываются, либо
помечены соответствующим образом.

> И конечно же в таком случае, случае неиспользования JAAS возникает
> необходимость ставить фильтры на каждую страницу для определения
> доступно ти для текущего юзера.

Да. Если идти в AS "процедурно/датабазным" путём то грабли обязательно
стукнут по лбу.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2013, 09:44:33
    #38165837
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Спасибо за полезные ответы. Идем по пути 2.

Есть вопрос.
Я правильно понял - сначала настраивается JAAS только не по пользователям, а по ролям, таким образом ролевые доступы прописываются в конфиг файле, дальше при логине пользователя, ему маппится определенная роль, имеющаяся в СУБД и соответственно в JAAS. В таком случае нет необходимости каждый раз ставить фильтры на новые страницы?

Как это реализовать? Как использовать @RolesAllowed? Есть ли ссылка краткая по использованию?

Используем Weblogic в качестве апп. сервера, а среда разработки JDeveloper.
...
Рейтинг: 0 / 0
26.02.2013, 10:08:11
    #38165870
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Добрый день, marlis82!

> Я правильно понял - сначала настраивается JAAS только не по
> пользователям, а по ролям, таким образом ролевые доступы прописываются в
> конфиг файле, дальше при логине пользователя, ему маппится определенная
> роль, имеющаяся в СУБД и соответственно в JAAS. В таком случае нет
> необходимости каждый раз ставить фильтры на новые страницы?

Не совсем. Пользователю сопоставляется набор ролей. На каждую операцию
даются права одной (ну или нескольким) ролям.
Пользователя и список ролей можно связывать через "группы ролей" к примеру.

> Как это реализовать? Как использовать @RolesAllowed? Есть ли ссылка
> краткая по использованию?

Да полно. Гугл весь пестрит ссылками.
По сути на реализацию метода пишешь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Entity1Bean implements Entity1Remote {
  @Override
  @RolesAllowed({"Entity1.get.one", "Entity1.get.list"}
  public Entity1 findElem(...){ ... }

  @Override
  @RolesAllowed({"Entity1.get.list"}
  public List<Entity1> findList(...){ ... }

  @Override
  @RolesAllowed({"Entity1.put.new"}
  public Entity1 mergeNew(Entity1 value){ ... }



И так далее. Потом в таблицах пишешь список ролей ("Entity1.put.new" и
т.п.), рядом список логинов, таблицу групп ролей и связку операторов и
групп.
Админ настраивает группы, даёт операторам права на группы, а в
логин-модуле ты по списку групп получаешь роли и пишешь их в методе,
реализующем LoginModule.commit в Subject. Подробности- это зависит от
сервера. Я только с jboss знаком.

> Используем Weblogic в качестве апп. сервера, а среда разработки JDeveloper.

Среда разработки не важна вообще, а Weblogic я не знаю.
В жбоссе список ролей заполняется так (что-то общее, что-то придётся
переделать).
Список ролей- просто массив строк roleList, полученный как-то...
Subject subject - то, что передаётся в LoginModule.initialize
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Set<Principal> principals = subject.getPrincipals();
    Group subjectGroup = createGroup("Roles", principals);
    principals.add(subjectGroup);
    while
(subjectGroup.getClass().getSimpleName().equals("NestableGroup")){
 SimpleGroup tmp = new SimpleGroup("Roles");
      subjectGroup.addMember(tmp);
      subjectGroup = tmp;
    }
    for (String admRole: roleList) {
      Principal role = new SimplePrincipal(admRole);
      subjectGroup.addMember(role);
    }




--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2013, 11:11:43
    #38165976
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
ivanraРеализовывать безопасность на уровне базы данных при наличии сервера приложений - для этого должны быть веские причины, например, наличие клиентов, имеющих прямой доступ к базе.
У нас например есть такое требование со стороны безопасности, что разграничение прав доступа должно дублироваться на каждом из уровней, при том, что у пользователей есть доступ только до AS.

GKS_Samara> Есть 2 варианта реализации:
> 1. Авторизация в oracle и доступ к ресурсам через Гранты СУБД. Но в
> таком случае возможно ли для каждого пользователя создать одно
> соединение к базе и соотвественно убивать его при выходе сессии на
> стороне аппликейшна.

Это убивает многие вещи, стандартные для AS- пул коннектов, JMS будет
работать непонятно как и т.п.
Proxy authentification, не?

marlis82,
почитайте плз authentication vs authorization, есть стойкое ощущение, что не чувствуете разницу между этими терминами.
...
Рейтинг: 0 / 0
26.02.2013, 11:44:24
    #38166058
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Добрый день, just_vladimir!

>> Реализовывать безопасность на уровне базы данных при наличии сервера
>> приложений - для этого должны быть веские причины, например, наличие
>> клиентов, имеющих прямой доступ к базе.
>
> У нас например есть такое требование со стороны безопасности, что
> разграничение прав доступа должно дублироваться на каждом из уровней,
> при том, что у пользователей есть доступ только до AS.

А чем оно обосновано? Или они просто не понимают сути происходящего?

>> Это убивает многие вещи, стандартные для AS- пул коннектов, JMS будет
>> работать непонятно как и т.п.
> Proxy authentification, не?

Это когда при каждой операции сессии даются права, соответствующие
пользователю?
Мне думается, это приведёт к фантастическим тормозам.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2013, 12:54:39
    #38166212
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
GKS_Samara>> Реализовывать безопасность на уровне базы данных при наличии сервера
>> приложений - для этого должны быть веские причины, например, наличие
>> клиентов, имеющих прямой доступ к базе.
>
> У нас например есть такое требование со стороны безопасности, что
> разграничение прав доступа должно дублироваться на каждом из уровней,
> при том, что у пользователей есть доступ только до AS.

А чем оно обосновано? Или они просто не понимают сути происходящего?
Формально - нормативными документами организации. А так высокая секретность -> высокая цена ошибки приводящей к утечке. Пример, криво написанное приложение затесалась уязвимость на sql-injection (или любая другая, не важно как такое получилось, за всем не уследишь, нет идеальных технологий/продуктов, не имеющих уязвимостей, что-нибудь, где-нибудь да найдется), то должна сработать защита на следующем уровне.

GKS_Samara>> Это убивает многие вещи, стандартные для AS- пул коннектов, JMS будет
>> работать непонятно как и т.п.
> Proxy authentification, не?

Это когда при каждой операции сессии даются права, соответствующие
пользователю?
Мне думается, это приведёт к фантастическим тормозам.
Ну может думаться по разному ;-) А так, экономия на спичках, т.к. прибавка к накладным расходам на операцию константная (конечно же не для случая, когда у вас тыс/млн запросов в секунду).
...
Рейтинг: 0 / 0
26.02.2013, 13:16:47
    #38166261
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
just_vladimirУ нас например есть такое требование со стороны безопасности, что разграничение прав доступа должно дублироваться на каждом из уровней, при том, что у пользователей есть доступ только до AS.
Просто интересно, как решили вопрос с коннектами, ведь по сути надо чтобы приложение подключалось к базе от имени пользователя, стандартные пулы тут неприменимы:
- новый коннект на каждый запрос
- коннекты хранятся в сессии / самодельный пул (и сколько же одновременно работающих пользователей)
- похерили это требование
...
Рейтинг: 0 / 0
26.02.2013, 13:29:19
    #38166287
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
ivanrajust_vladimirУ нас например есть такое требование со стороны безопасности, что разграничение прав доступа должно дублироваться на каждом из уровней, при том, что у пользователей есть доступ только до AS.
Просто интересно, как решили вопрос с коннектами, ведь по сути надо чтобы приложение подключалось к базе от имени пользователя, стандартные пулы тут неприменимы:
- новый коннект на каждый запрос
- коннекты хранятся в сессии / самодельный пул (и сколько же одновременно работающих пользователей)
- похерили это требование
Приводил выше один из вариантов - proxy authentification в случае Oracle (вроде как в топике речь о нем идет), в DB2 это будет trusted context, в кратце суть сводится к тому, что пул держится под неким технологическим пользователем, в контекст которого проставляется конечный пользователь. Можно и свои велосипеды изобретать в виде нескольких пулов, каждый пул будет соответствовать определенной роли.
...
Рейтинг: 0 / 0
26.02.2013, 13:38:40
    #38166310
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82Есть 2 варианта реализации:
есть ещё, при вменяемых админах, авторизация в доменах \ LDAP
Когда большая сеть организации и в оракле есть Глобальные роли
AFAIK
Код: java
1.
SET GLOBAL ROLES


Там возможен пул, права хранятся вне БД и там уже взрослые решения от Оракле и взрослая безопасность.
...
Рейтинг: 0 / 0
26.02.2013, 13:39:42
    #38166311
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
just_vladimirproxy authentification
да. Я про неё.
...
Рейтинг: 0 / 0
26.02.2013, 13:59:31
    #38166357
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Добрый день, just_vladimir!

> Формально - нормативными документами организации. А так высокая
> секретность -> высокая цена ошибки приводящей к утечке. Пример, криво
> написанное приложение затесалась уязвимость на sql-injection (или любая
> другая, не важно как такое получилось, за всем не уследишь, нет
> идеальных технологий/продуктов, не имеющих уязвимостей, что-нибудь,
> где-нибудь да найдется), то должна сработать защита на следующем уровне.

Понятно. Нам, пока, к счастью такое требование не выставляют.

> Ну может думаться по разному ;-) А так, экономия на спичках, т.к.
> прибавка к накладным расходам на операцию константная (конечно же не для
> случая, когда у вас тыс/млн запросов в секунду).

В целом- у этого подхода есть накладные расходы. Т.е. лишний уровень
безопасности оплачивается более дорогим железом (плюс к лишнему коду).

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2013, 08:51:22
    #38167444
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
GKS_Samara
Спасибо большое, а можно ли доступ закрывать на уровне бизнес компонент (EJB, sessB, ADF)?

just_vladimir
Уж поверьте есть представление насчет ААА:)
Вопрос про контроль в несколько ступеней, количество пользователей (активных и айдл), на скорости как это отражается?

Petro123
LDAP не совсем то, все таки хочется держать пользователей все таки в СУБД.
...
Рейтинг: 0 / 0
27.02.2013, 10:30:37
    #38167565
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82LDAP не совсем то, все таки хочется держать пользователей все таки в СУБД.тебе хочется или админам? Обычно у них не БД а куча систем и они хотят LDAP.
Когда приоритет несколько уровне, то о скорости не говорят. Она не критична. Ну, ....может быть долгий коннект один раз утром....
...
Рейтинг: 0 / 0
28.02.2013, 08:19:00
    #38168992
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Petro123
Разрабатываемый продукт

Хотел поинтересоваться:

1. Насколько надежно хранить в контексте сессии данные по пользователю? Планируется загонять данные (логин например и номер сессии в оракле возможно для аудита) в Https_session для дальнейшей работы (чтобы возможно в будущем фильтровать данные на уровне СУБД тоже).

2. Хотелось бы дополнительно прикрутить туда доступ по сертификатам (Х.509). Лучше прикрутить дополнительный модуль authenticator от weblogic или ест еще варианты?
...
Рейтинг: 0 / 0
28.02.2013, 10:50:07
    #38169183
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
marlis82,
1. Надёжнее чем что? Больше хранить и негде, лишь это было на защищённом сервере. По первости корзину покупателя хранили в куках на клиенте). Потом уже перенесли на сервер, чтобы юзвер сумму не менял)

2. А у тебя хранилище сертификатов есть. AFAIK ставится спец сервер под них в сетке + керберос и т.д.
Это больше вопрос топологии сети у заказчика и админства. Без них стрёмно разрабатывать с нуля.

авторЧтобы сделать сертификат X.509 доступным для Windows Communication Foundation (WCF), в коде приложения необходимо указать имя хранилища сертификатов и его расположение. В некоторых случаях идентификатор процесса должен иметь доступ к файлу, который содержит закрытый ключ, связанный с сертификатом X.509. Чтобы получить закрытый ключ, связанный с сертификатом X.509 в хранилище сертификатов, WCF должен иметь соответствующее разрешение. По умолчанию доступ к закрытому ключу сертификата имеют только владелец и системная учетная запись.

imho
...
Рейтинг: 0 / 0
03.03.2013, 10:44:50
    #38172320
marlis82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С праздником мужики. Вопрос по JAAS
Petro123,

извиняюсь за задержку.

1. думал как вариант может в джиндае, а далее доступ по логину и пассу туда.

2. есть сервер сертификации.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / С праздником мужики. Вопрос по JAAS / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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