特定のロータスノートドキュメントの完全なユーザーリストアクセス権を保存する方法を見つけようとしています。
カタログレベルのACLはcatalog.nsfから取得できますが、ドキュメントレベルのアクセスは取得できません。また、ドキュメントの[作成者]フィールドには、読み取り専用アクセスユーザーは表示されないと思います。
特定のドキュメントのすべてのユーザーの完全なACLを取得する方法を知っている人はいますか?
どんな助けでもありがたいです、ありがとう!
編集:スペル。
特定のロータスノートドキュメントの完全なユーザーリストアクセス権を保存する方法を見つけようとしています。
カタログレベルのACLはcatalog.nsfから取得できますが、ドキュメントレベルのアクセスは取得できません。また、ドキュメントの[作成者]フィールドには、読み取り専用アクセスユーザーは表示されないと思います。
特定のドキュメントのすべてのユーザーの完全なACLを取得する方法を知っている人はいますか?
どんな助けでもありがたいです、ありがとう!
編集:スペル。
サイモンは正しいです。それは自明ではありません。フォームを読むという彼の提案はスキップしますが、それでも簡単ではありません。あなたの質問に従って1つのドキュメントだけをチェックする場合でも、それは重要です。監査人がこの種の情報を必要とする場合があることは知っていますが、Dominoのセキュリティシステムはそれを念頭に置いて設計されておらず、情報を取得するための組み込みAPIはありません。
Document.getItems()
Javaでは、このメソッドを使用してすべてのアイテムのベクトルを取得する必要があります。次に、アイテムを確認する必要があります。それがまたはであるかItem.getType()
どうかを判断するためにチェックする必要があります。そうである場合は、値のベクトルを取得するために実行する必要があり、各値がロールであるかどうかを確認するためにベクトルチェックをループする必要があります。それが役割である場合は、を使用して反復する必要がありますItem.READERS
Item.AUTHORS
Item.getValues()
Database.getACL()
ACLEntries
役割を持っているものと、それらが個人エントリであるかグループエントリであるかを判別するため。また、それらがグループエントリである場合は、Dominoディレクトリでグループメンバーを検索する必要があります。これには、ネストされたグループの展開が必要になる場合があります。アイテム内の役割ではない値については、Dominoディレクトリに対してその値をチェックして、それが有効な個人またはグループであるかどうかを確認し、最終的に個人に到達するまでグループを再度展開します。Domino Directoryでのルックアップでは、ディレクトリアシスタントが構成されている可能性があることを心配する必要があります。その場合、複数のDomino Directoryデータベースをチェックできますが、Notes / Domino 8を使用できる場合は、Directory
あなたのためにそれを世話するクラス。
あなたが求めているのは、やや重要なことです。
データベースACL。次のことを決定する必要があります。
次に、データベース内のすべてのドキュメントを読み取る必要があります。これを行うには、アクセス権が必要になります。つまり、少なくとも(ドキュメントに設定されている場合は)リーダーアクセスと、暗号化されたフィールドへのアクセス(設定されている場合)になります。
NotesNoteCollectionクラスを使用して、デザインとドキュメントを反復処理できます。
デザインをチェックすると、フォームを読んで、リーダーフィールドがあるかどうか、およびどの値が設定されているかを確認できます。その後、関連するフォームの設定が静的でない場合は、ドキュメントを確認できます。
サイドポイントで。アプリケーションに対して特定のユーザーを診断しようとしている場合は、次のnotes.ini設定を使用できます。
DEBUG_THREADID=1
DEBUG_SERVERACL=2
これは、ACL要求が行われるたびにDominoコンソールに出力されます。誰が要求しているか、どのレベルを要求しているか、どのレベルを持っているか、どのアクセス権が与えられているかが出力されます。
デバッグは非常に冗長ですが、問題の診断と完了時に無効にするためにのみ使用する必要があります。