【问题标题】:Batch signing with CoSign api and OTP使用 CoSign api 和 OTP 进行批量签名
【发布时间】:2015-05-10 14:37:42
【问题描述】:

我想使用 CoSign api 将 CoSign 签名解决方案添加到我公司的自定义 Oracle 表单系统中。为了提高安全性并遵守当地法规,我想使用 OTP(一次性密码)。

所需功能:

  1. 用户登录到我的自定义应用程序
  2. 一个包含许多 pdf (50-100) 文件列表的自定义表单打开,旁边有一个复选框
  3. 如果他愿意,用户可以打开每个 pdf。通常他不会,但这是他的决定
  4. 用户选中 pdf 文件列表旁边的所有复选框并按下“签名”按钮
  5. 自定义弹出窗口要求用户提供他的 CoSign 用户名/密码和 OTP
  6. 使用 CoSign api 对用户进行身份验证。首先,针对用户名和密码向 CoSign 进行 api 调用。之后,就 OTP 向 Radius 服务器发出另一个 api 调用。
  7. 如果身份验证成功,所有 50-100 个 pdf 文件都会立即签名,而无需再次要求用户输入 username-password-otp。
  8. 如果用户想要签署另一组 50-100 个 pdf 文件,则可以再次要求他提供凭据。

在此批量签名自定义应用程序中,上述情况是否可能或用户必须向应用程序提供 50-100 次其凭据?

CoSign api 是否支持上述流程?会不会有关于 otp 或会话生命周期的持续时间问题?

【问题讨论】:

    标签: cosign-api


    【解决方案1】:

    你有两个我能想到的选择:

    1. 您的 OTP 令牌是软件令牌,并且有一个 GetOTP() API 不提示用户输入。
    2. 一次性获取 OTP 并签署尽可能多的 您可以在 OTP 有效期内的文件 并行同时)。

    详情

    1.使用 GetOTP() API 的顺序批处理

    从(软件)令牌获得 OTP 后,您必须立即使用 SAPI 本地 SignEx* 函数,该函数也接收 OTP 作为参数。

    您也可以使用从批处理或 power-shell 脚本调用的 ARFileSign 实用程序来实现它。这里也必须预先获取 OTP。

    2。并发批处理

    执行一次(每个进程)

    SAPICrypt SAPI = new SAPICryptClass();
    SAPI.Init();
    

    然后为每个文档生成一个不同的线程来执行:

    SAPI.HandleAcquire(out SesHandle);
    rc = SAPI.Logon(SesHandle, User, Domain, Password);
    //create signature field code comes here
    SAPI.SignatureFieldSignEx(SesHandle, sf, 0, OTP);
    

    应通过实验确定可以同时签署的最大文档数。从 10 开始,慢慢增加金额,直到看到有些没有签名。这取决于您的客户端计算机的强度(多少核心、多少内存、与 CoSign 服务器的链接质量等)以及 OTP 有效期的持续时间。

    确定可以并发签名的数量后,为了安全起见,可以实现“签名失败收集器”:第一次失败将停止并行执行;那么serial“fail to be signed collector”会插入所有计划签名但未签名的文件到下一轮签名。

    希望对你有帮助,

    阿维夫·西蒙诺维奇 销售工程师和项目经理, 文档签名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多