как реализовать разграничение доступа к данным
От: LT-  
Дата: 01.05.07 13:50
Оценка:
Встала такая проблема: каждой строке в таблице необходимо установить права на чтение, создание изменеие и удаление. Таким образом, чтобы пользователь Вася мог просматривать некоторые записи из таблицы, некоторые менять и пр. Кроме того, необходимо чтобы это можно было настраивать.

Задачка вроде бы популярная, для любого приложения важна, однако я не нашел конкретных рекомендаций.

В качестве ОРМ хочу использовать Seam, EJB3 с хибернейтом, поэтому вопрос, как это лучше сделать?

Возникают следующие варианты:
1. Использовать JAAS — Permission сохранять и удалять из базы, AccessControl.checkPermissions(perm) юзать для проверки прав. При этом в сессионные бины извлекаются все данные, а какие передавать на уровень представления решает сессионный бин в зависимости от АксессКонтрола.

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

3. С помощью вьюшек доставать только нужные данные, сохранять их с помощью хранимых процедур.


Как поступить лучше? Самому мне нравится вариант 1, но я мало доверяю JAASовскому контролю доступа. Есть ли у кого нибудь опыт в этом деле? Может быть есть какие нибудь компоненты расчитанные именно на этот случай?

Буду благодарен за любые советы
Re: как реализовать разграничение доступа к данным
От: Cyberax Марс  
Дата: 01.05.07 17:00
Оценка:
Здравствуйте, LT-, Вы писали:

LT->Возникают следующие варианты:

LT->1. Использовать JAAS — Permission сохранять и удалять из базы, AccessControl.checkPermissions(perm) юзать для проверки прав. При этом в сессионные бины извлекаются все данные, а какие передавать на уровень представления решает сессионный бин в зависимости от АксессКонтрола.
Лучше не заморачиваться. JAAS слишком для такого неудобен.

В Hibernate3 есть такая вещь — фильтры и event'ы. В самой Hibernate есть некие зачатки декларативной security — см. главу "12.3. Hibernate declarative security".

У себя я на этой основе построил фреймворк для ACLей.
Sapienti sat!
Re[2]: Вопрос по загрузке
От: leonidvp Россия  
Дата: 15.06.07 13:36
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, LT-, Вы писали:

C>У себя я на этой основе построил фреймворк для ACLей.
С сохранением / вставкой / удалением понятно, а как вы реализовали загрузку данных с учетом прав доступа?
Как я себе это представляю, недоступные объекты не должны попадать в результаты запроса, но реализовать это средствами hibernate пока не могу — приходится отсеивать недоступные уже в приложении.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.