Проверка разрешений / ACL для дополнительных участников в CMIS - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю с клиентскими библиотеками openCMIS для подключения к SAP Document Service (Apache Химия-репозиторий в SAP Cloud Platform) и взаимодействия с репозиторием там.

Насколько я понимаю, любой ACL всегда будут проверяться на предмет разрешений пользователя. В следующем примере пользователи S0020560618, S0005549254 и S0016894146 имеют cmis: разрешение на чтение для тестовой папки !!

введите описание изображения здесь

Теперь мне интересно, возможно ли это включить других пользователей помимо пользователя для проверки прав доступа. Допустим, мы хотим, чтобы эти три пользователя имели разрешение на чтение, но оно должно быть у любого пользователя, принадлежащего к местоположению в Нью-Йорке:

введите описание изображения здесь

Я видел SAP имеет свой собственный API (com.sap.ecm.api.EcmFactory) для генерации сеанса, передающего дополнительные субъекты. Код будет выглядеть примерно так:

String location = "newyork";

// fetch current user and its roles
User currentUser = "S9393939393";

// add location New York
List<String> additionalPrincipals = new ArrayList<String>();
additionalPrincipals.add(location);


// connect to Repository Test with location New York
String uniqueRepositoryName = "Test";
String key = "XXX";

Session session = EcmFactory.connectForUser(uniqueRepositoryName, key, null,
    currentUser, null, additionalPrincipals);

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

Если, например, пользователь сам не имеет права доступа к указанному документу c, но одному из дополнительно предоставленных принципалов разрешено читать содержимое, то пользователь также может получить доступ содержание в контексте этой связи.

Я проверил его, и он работает хорошо, и это здорово. Однако я хочу использовать клиентские библиотеки openCMIS для установки sh соединения (типа browser / json) и работать таким образом, поскольку хочу подключаться не только к SAP Document Service, но и в конечном итоге к другим CMIS-совместимым репозиториям.

Теперь мой вопрос: есть ли способ создать сеанс, включающий дополнительные принципалы? Если нет, есть ли способ проверить эти дополнительные принципы при запросе моего хранилища?

Если нет, следует ли выполнять эти проверки программно? Что-то вроде во время выполнения проверки, принадлежит ли пользователь к расположению newyork , а затем определить его разрешения для ACL папок?

Служба документов SAP делает этот дополнительный принцип ACL / проверку прав доступа «из коробки». Это что-то определенное c для этой реализации CMIS SAP Repository или Apache Chemistry это позволяет? Любая помощь в этом отношении будет принята с благодарностью! Спасибо заранее. Привет

...