3

我正在尝试找到一种方法来保存特定 Lotus Notes 文档的完整用户列表访问权限。

我知道我可以从 catalog.nsf 获得数据库级别的 ACL,但不能获得文档级别的访问权限。此外,文档的作者字段 - 我相信 - 不会列出只读访问用户。

有谁知道如何获取特定文档的每个用户的完整 ACL?

任何帮助表示赞赏,谢谢!

编辑:拼写。

4

2 回答 2

6

西蒙是对的。这是不平凡的。尽管我会跳过他关于阅读表格的建议,但这仍然不是微不足道的。即使根据您的问题只检查一个文档,这也很重要。我知道审计人员有时确实想要这类信息,但 Domino 的安全系统在设计时并未考虑到这一点,并且没有内置 API 来获取信息。

在 Java 中,您需要使用该Document.getItems()方法来检索所有 Items 的向量。然后你必须查看项目。您需要检查Item.getType()以确定它是 aItem.READERS还是Item.AUTHORS。如果是,那么您需要Item.getValues()检索值的向量,并且您必须循环检查向量以查看每个值是否是一个角色。如果是角色,则必须使用Database.getACL()并遍历ACLEntries确定哪些具有角色以及它们是个人条目还是组条目。如果它们是组条目,您必须在 Domino 目录中查找组成员——这可能需要扩展嵌套组。对于 Item 中不是角色的任何值,您必须对照 Domino 目录检查该值以查看它是否是有效的 Person 或 Group —— 并再次展开该组,直到您最终到达 People。对于 Domino 目录中的查找,您必须担心可能会配置目录辅助,在这种情况下可能需要检查多个 Domino 目录数据库,但如果您可以使用 Notes/Domino 8,这会更容易一些,因为有一个Directory为您处理这些问题的课程。

于 2012-10-04T18:48:52.697 回答
3

你所要求的有点不平凡。

  1. 数据库 ACL。您需要确定以下内容。

    • ACL 列表中的名称。
    • 他们是个人、服务器还是组?
    • 如果他们是一个组,您需要阅读 Names.nsf
    • 他们有什么角色吗?
  2. 接下来,您需要读取数据库中的每个文档。为此,您将需要访问权限。所以这至少是读者访问(如果在文档上设置)以及对加密字段的访问(如果设置的话)。

您可以使用NotesNoteCollection类来遍历设计 + 文档。

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

检查设计将允许您阅读表单并查看它们是否具有 reader 字段以及设置了哪些值。之后,如果相关表单的设置不是静态的,您可以检查文档。

在一个侧面。如果您尝试针对应用程序诊断特定用户,您可以使用以下 notes.ini 设置。

DEBUG_THREADID=1
DEBUG_SERVERACL=2

每次发出 ACL 请求时,这都会在 Domino 控制台上打印出来。它将打印谁在请求,他们请求什么级别,他们拥有什么级别以及他们被授予什么访问权限。

尽管调试非常冗长,但只能用于诊断问题并在完成后禁用。

于 2012-10-04T18:09:51.953 回答