А-ля "Мандатный" доступ в классик домино веб.

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
43
Обычным способом контроля доступом к документам в Домино, является прописывание readers\Authors полей в самом документе.
Все бы хорошо, но при этом в случае изменения условий предоставления доступа нужно перелопатить все документы со старым доступом и пересчитать права.
Причем совсем не обязательно что когда то оно и понадобится.
Мне это процедура порядком надоела и я задумался над предоставлением доступом "по требованию".
Для этого была использован функционал Домино - когда при недостатке прав\логине вызывается форма, прописанная в domcfg.nsf
26582
При этом в поле reasonType формируется код, по которому можно понять причину вызова этой формы.
На скрине - дефолтовая расшифровка:
26583

ну а далее - дело техники.
Используем вычисляемую подформу с формулой: @If(reasonType="1" & HTTPUser!="Anonymous";"$$LoginAuthorizationFailure" ;"$$LoginUser" )
И там вызываем через ajax агента, которому передаются имя пользователя, запрошенный URL и т.п. для принятия решения о предоставлении доступа.
<script>
$(document).ready(function(){
var d=$('form:first').serialize();
$.ajax({
type: "POST",
url: 'redir?Open',
async: true,
data:d
}).done(function(data) {
$("#content").html(data);
})
});
</script>
В случае, если доступ разрешен - то прописываются нужные поля Readers\Authors и делается reload документа. У меня проверка около десятка критериев занимает ок 250 ms.
Через некоторое время у документа просто вычищаем нужные поля readers\Authors.

Этот финт ушами решил мои проблемы в системе с ок 10 млн документов.

PS - появляющийся транспарант "проверка уровня доступа..." как то дисциплинирует пользователей )))
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
466
над предоставлением доступом "по требованию".
самопальный ABAC ;)
возможно в приложении надо будет думать про ролевые атрибуты к документу (как подчиненные док/доки) и делать отдачу контента через прокси-сервис (на сервлете)
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
43
самопальный ABAC ;)
возможно в приложении надо будет думать про ролевые атрибуты к документу (как подчиненные док/доки) и делать отдачу контента через прокси-сервис (на сервлете)
Не не... хрен редьки не слаще. на 10 лямом доков - хх лямов атрибутов))) Цимус в том, что домина запрашивает доступ именно тогда, когда его нет. тогда и рассчитать не грех...
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
т.е. документы на самом деле не имеют автор/ридер полей и никак не защищены ACL? Если кто-то сломает/хакнет ваш web-интерфейс, то он получит доступ ко всем документа в базе?
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
43
т.е. документы на самом деле не имеют автор/ридер полей и никак не защищены ACL? Если кто-то сломает/хакнет ваш web-интерфейс, то он получит доступ ко всем документа в базе?
Не. Изначально имеют ридерсов/авторов тёк кто создал. Там бп такой - попадают в начало бп согласно одним правилам, а другие имеют доступ к созданном по другим правилам...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!