您能以编程方式在数据库中签署代理吗?

时间:2013-04-17 12:16:37

标签: xpages lotus-notes lotusscript xpages-extlib xpages-ssjs

有没有办法以编程方式在数据库中签署代理?我想使用服务器代理上的运行来签署我传递它的数据库的代理。我想使用LotusScript或XPage来做到这一点。

MJ

3 个答案:

答案 0 :(得分: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)

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

更新

的LotusScript

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)

答案 1 :(得分:0)

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

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

    签署代理的设计文档

    NotesDocument.Sign

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

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

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

答案 2 :(得分:0)

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

签署任何文档都需要您的ID文件中存在的私钥。因此,通常情况下,您无法使用不在Notes客户端上运行的代码对代理进行签名。

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

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