Извлечение полного списка ACL для Lotus Notes Document из Java

Я пытаюсь найти способ сохранить права доступа к полному списку пользователей для конкретного документа Lotus Notes.

Я знаю, что могу получить ACL на уровне базы данных из catalog.nsf, но не на уровне документа. Также в поле "Автор" документа "Я считаю" не будут перечислены пользователи с правами доступа только для чтения.

Кто-нибудь знает, как получить полный ACL каждого пользователя для конкретного документа?

Любая помощь приветствуется, спасибо!

Изменить: правописание.

2 ответа

Решение

Саймон прав. Это нетривиально. Даже если бы я пропустил его предложение о прочтении форм, оно все еще нетривиально. Даже для проверки только одного документа в соответствии с вашим вопросом, это нетривиально. Я знаю, что аудиторы иногда хотят получить именно такую ​​информацию, но система безопасности Domino не была разработана с учетом этого, и нет встроенного API для получения информации.

В Java вам нужно использовать Document.getItems() метод для получения вектора всех предметов. Тогда вы должны просмотреть предметы. Вам нужно проверить Item.getType() чтобы определить, является ли это Item.READERS или же Item.AUTHORS, Если это так, то вам нужно сделать Item.getValues() чтобы получить вектор значений, и вам нужно пройтись по векторной проверке, чтобы увидеть, является ли каждое значение ролью. Если это роль, вы должны использовать Database.getACL() и перебрать ACLEntries определить, какие из них имеют роль, и являются ли они записями Персона или Группой. И если они являются записями группы, вы должны искать членов группы в Domino Directory - что может потребовать расширения вложенных групп. Для любых значений в Элементе, которые не являются ролями, вы должны проверить это значение в Domino Directory, чтобы проверить, является ли он действительным Персоном или Группой, - и снова расширять группу, пока, наконец, не доберетесь до Людей. Для поиска в Domino Directory вам нужно беспокоиться о том факте, что Directory Assistance может быть настроен, и в этом случае можно проверить несколько баз данных Domino Directory, но это несколько проще, если вы можете использовать Notes/Domino 8, потому что есть Directory класс, который позаботится об этом для вас.

То, что вы просите, несколько нетривиально.

  1. База данных ACL. Вам необходимо определить следующее.

    • Имя в списке ACL.
    • Они человек, сервер, группа?
    • если они группа, вам нужно прочитать Names.nsf
    • У них есть какие-то роли?
  2. Далее нужно прочитать каждый документ в базе данных. Для этого вам понадобятся права доступа. Так что это был бы доступ по крайней мере для читателя (если он установлен в документе), а также доступ к зашифрованным полям (снова, если он установлен).

Вы можете использовать класс NotesNoteCollection для перебора документов design +.

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_NOTESNOTECOLLECTION_CLASS.html

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

На боковой точке. Если вы пытаетесь диагностировать конкретного пользователя по приложению, вы можете использовать следующие настройки notes.ini.

DEBUG_THREADID=1
DEBUG_SERVERACL=2

Он будет распечатываться на консоли Domino каждый раз, когда делается запрос ACL. Он напечатает, кто запрашивает, какой уровень они запрашивают, какие уровни они имеют и какой доступ им предоставили.

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

Другие вопросы по тегам