【问题标题】:Extract Lotus Notes Document's complete ACL from Java从 Java 中提取 Lotus Notes Document 的完整 ACL
【发布时间】:2012-09-25 19:34:27
【问题描述】:

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

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

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

感谢任何帮助,谢谢!

编辑:拼写。

【问题讨论】:

    标签: java document acl lotus-domino lotus


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您所要求的有点不平凡。

      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

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

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

      DEBUG_THREADID=1
      DEBUG_SERVERACL=2
      

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

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

      【讨论】:

      • 我会跳过阅读设计集合,并且表单上列出的表单字段可能会或可能不会出现在文档中。它们可能与表格上列出的类型相同,也可能不同。归根结底,只有保存在文档中的内容才重要。 (表单本身的访问控制可以阻止用户使用表单显示文档;但它们不会阻止编程访问。)此外,文档可以包含任何表单上未列出的其他读者或作者字段。
      • 好吧,我提到了它,因为可能存在尚未为该表单创建文档的情况,但没有表单中的列表可能会破坏其他地方的功能(无论 OP 计划做什么)。
      • 我推断这可能是安全或合规审计情况,我认为这是人们要求此类信息的必然原因。但我可能错了。
      • 您对审计情况的看法是正确的。需要一份报告来列出谁对数据库 X 中的每个文档具有读取/正确访问权限。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      相关资源
      最近更新 更多