Получите права доступа для другого пользователя с помощью FileNet Java API

У нас есть система сборки, в которой нам нужно получать документы для сборок других пользователей. У нас нет их пароля, а только их логин, и мы будем использовать учетную запись службы. Есть ли способ получить права доступа для другого принципала с помощью FileNet API, чтобы мы не позволили им получить то, к чему у них нет доступа?

Ради производительности я бы предпочел попросить CE выполнить проверку вместо того, чтобы получать все разрешения и проверять их все по одному. Кроме того, вложенные группы и приоритет безопасности (прямой/шаблон/прокси) могут значительно замедлить работу и усложнить код. Что-то вроде getAccessAllowed, но с учетом принципала или пользователя? Если нет, то как лучше всего это сделать?

Я видел, что get_MemberOfGroups имеет дело с вложенной группой, но нам все еще нужно проверять все разрешения, заботясь об исходном приоритете и приоритете запрета/разрешения, что означает повторную реализацию стратегии безопасности CE.


person Guillaume Delory    schedule 21.08.2015    source источник
comment
Привет, вы выполнили свое требование? , у меня есть аналогичное требование для подтверждения идентификатора другого пользователя в действии пользователя службы через автономное приложение.   -  person Friendy    schedule 21.10.2015
comment
@Guillaume Короткий ответ: нет, вам нужно пройти через ACL, чтобы проверить, есть ли у определенного пользователя доступ или нет. и не пытайтесь прибегать к базе данных, так как ACL хранится как объект BLOB, который не сортируется FileNet в объект ACL, а затем вводится в документ   -  person WiredCoder    schedule 14.07.2016


Ответы (2)


Вы можете создать собственный LoginModule для аутентификации пользователя без пароля, после чего вы сможете работать с CE как исходный пользователь без сервисной учетной записи.

Но вам нужно добавить этих пользователей в ACL объектов FN с правильными разрешениями.

person swepss    schedule 01.09.2015
comment
Спасибо большое. Некоторые люди также ориентировали меня в этом направлении. Я никогда не работал с LoginModule. Нужно ли мне добавлять LoginModule локально (в клиенте с помощью Java API), на сервере (в консоли WebSphere) и то, и другое? У вас есть пример или какая-то документация, на которую вы могли бы мне указать? Спасибо - person Guillaume Delory; 02.09.2015
comment
Lol Это немного грубо :) и, конечно, я это сделал, я больше говорил об архитектуре и о том, что где стоит, но достаточно честно. Я изучу больше и вернусь, если у меня возникнут вопросы. Честно говоря, в последнее время у меня не так много времени разбираться в этом, и кто-то еще рассказал мне о перехватчике TAI, который может быть другим подходом. - person Guillaume Delory; 03.09.2015
comment
@guillaume-delory TAI на самом деле не то же самое, что JAAS. Просто перейдите по этой ссылке, чтобы понять Разница между TAI и JAAS. Для вашего случая, с моей точки зрения, JAAS будет лучше, чем TAI. TAI ориентирован на защиту соединений и не аутентифицирует пользователя, а только разрешает соединения. Вы должны использовать TAI, когда вам нужно защитить систему от какого-то вредоносного агента между системой и службой аутентификации. - person swepss; 03.09.2015

Если я правильно понял то, что вы говорите, я думаю, что лучший способ сделать это - наоборот. Вы не смотрите, какие права доступа принадлежат пользователю и совпадают с документом, вам нужно видеть, что этот пользователь спрашивает, и у него есть права доступа. Лучше всего использовать Active Directory с группами пользователей и установить для них разрешения типа документа vie. Но скажем так же, как вы установили права доступа на стороне документа. Когда пользователь вызывает документ, получает его экземпляр

Document  doc  =  Factory.Document.fetchInstance(os,ID,null);

И получить список разрешений

 AccessPermissionList parmissin = doc.Permissions;

И с циклом получите, какое разрешение установлено для этого документа

 foreach (IAccessPermission owner in parmissin)
{
if (owner.GranteeName == "your loginuserpermission" )
{
 // you can cont your work
}
}

и сохраните локальный набор разрешений, в котором вы проверяете своего пользователя (db/txt), и, если они совпадают, используйте пользователя своей учетной записи службы и показывайте изображение и информацию.

person Archangle    schedule 21.10.2015