0

有没有办法以编程方式对数据库中的代理进行签名?我想使用在服务器上运行的代理来签署我通过它的数据库的代理。我想使用 LotusScript 或 XPage 来执行此操作。

乔丹

4

3 回答 3

6

在 Lotusscript 中使用代理中首选的签名者 ID 运行此代码

Dim session As New Notessession 
Dim db As Notesdatabase 
Set db = session.Currentdatabase 
Call db.sign(DBSIGN_DOC_ALL)

在 SSJS 中

var DB:NotesDatabase=sessionAsSigner.getDatabase(database.getServer(),database.getFilePath());
DB.sign(NotesDatabase.DBSIGN_DOC_ALL)

==================

更新

莲藕

dim AdminPNotesId
dim AdminP as NotesAdministrationProcess
Set  AdminP =  notesSession.CreateAdministrationProcess(Server)
AdminpNoteId=AdminP.SignDatabaseWithServerID(Server,Database)

SSJS

var AdminP=sessionAsSigner.CreateAdministrationProcess(Server)
var AdminPNoteID=AdminP.SignDatabaseWithServerID(Server,Database)
于 2013-04-17T12:29:39.023 回答
0

几年前,我使用 LS 代理完成了这项工作。我记得它是这样的:

  1. 获取包含所有代理的 NotesNoteCollection
  2. 循环访问所有 noteIds 的集合
  3. 使用这些 noteId 访问每个设计文档并检查它是否指向所需的代理
  4. 使用签署代理的设计文档

    NotesDocument.Sign

不过,我从未尝试过使用 SSJS 来做到这一点。但它至少可以使用使用适当 ID 签名的代理(请参阅下面的更新)

编辑1: @Sven:当然,我忘了提到你需要在签名后保存你的设计文档......

编辑 2: @Serdar:你说得对:要签署代理我需要签名者的 Notes ID,所以 Fred 的更新解决方案是一个

于 2013-04-17T12:35:51.757 回答
0

两个答案中的方法都是正确的。但他们将在笔记客户端上工作......

签署任何文件都需要一个存在于您的 ID 文件中的私钥。因此,通常,您不能使用不在 Notes 客户端上运行的代码对代理进行签名。

但是,有些产品(例如Ytria SignEZ)使用 C-API 对设计元素进行签名,但它们会将必要的 ID 文件缓存在安全存储中(最近版本的 ID Vault 可用于此目的,但我不知道 API 的多少部分对我们开放)。

更新:正如 Fredrik 所说,始终可以通过管理员请求使用服务器 ID 进行签名。

于 2013-04-17T12:47:05.007 回答