DocuSign 收件人签名 url 过期

DocuSign Recipient sign url expire

我需要将 DocuSign 添加到我的聊天应用程序(iOS、Android、Windows),以便要求向所有聊天组成员签署文档。

我想在没有服务器实现的情况下实现 DocuSign 签名流程:只有发件人和收件人客户端实现(这可能吗?)。

我想象中的流量:

我用 Postman 测试了这个流程,我有一些问题:

  1. EnvelopeViews: createRecipient需要X-DocuSign-Authenticationheader,所以这个请求一定是从Sender端调用的吧?
  2. EnvelopeViews: createRecipient return一个url可以用一次,为什么?我第二次使用这个 url 我得到 404 作为响应。

所以我注意到收件人不能两次使用 url(由发件人提供),但他不能每次都生成一个新的 url,因为它没有经过身份验证(没有X-DocuSign-Authentication)。

如何正确实施此流程?

  1. X-DocuSign-Authentication header 是旧版身份验证,请不要使用它,因为它不如现代 OAauth 安全。
  2. 再次强调安全性。每次你想让别人签署你的代码时,都应该生成 URL。另外请注意,您不能生成两个 URL。一次只有一个有效。您需要您的应用程序具有一些逻辑以确保只有一个用户正在签名,并且仅在那个时间点生成 URL。

很多好问题:

EnvelopeViews: createRecipient require X-DocuSign-Authentication header, so this request must be called from Sender side, is it?

  1. 不要使用X-DocuSign-Authenticationheader。这是“传统身份验证”,DocuSign 不支持新的 REST eSignature 应用程序使用它。相反,请使用 OAuth。可能是 OAuth JWT 授权流程,因为该流程使您的应用程序能够在用户不存在时模拟 DocuSign 用户(例如发件人)。

  2. 您可以从服务器或浏览器应用程序调用 EnvelopeViews: createRecipient。如果您从浏览器调用,则需要实施私有 CORS 网关。

  3. 无论哪种方式,当签名者准备签名时,您从 EnvelopeViews:createRecipient API 调用中获取签名仪式 URL,然后将签名者的浏览器重定向到URL.

EnvelopeViews: createRecipient return an url that can be used once, why?

出于安全原因。这是我们信息安全架构的一部分。而且签约仪式URL不仅只能使用一次,而且还有时间限制。当您从 DocuSign 收到它时,应该在一两分钟内使用它。它会在创建后 5 分钟过期。

The second time I use this url I get 404 as response.

是的,这是设计好的。您得到 URL,然后立即将签名者重定向到 URL。然后他们签字。然后他们被重定向回您的应用程序。

如果您想向签名者提供一个 URL 供签名者以后使用,您可以自己实施该流程。我已经在其他答案中描述了如何。

So what I notice is the Recipient can't use the url (provided by the Sender) twice but he can't generate a new url every time because it isn't authenticated (no X-DocuSign-Authentication).

How can I implement this flow properly?

你快到了。在您的应用程序中实施 JWT 授权流程。这样,即使发件人不在身边,您的应用也可以模拟发件人。当签名者想要签名时,您的应用会从 DocuSign 获取签名仪式 URL,然后重定向以启用签名。

发件人使用标准 OAuth 授权码授权登录 DocuSign 的另一种方法也很好用。这会为您的应用程序提供访问令牌和刷新令牌。

您的应用允许发件人使用访问令牌发送信封。

稍后,当签名者想要签名时,您的应用程序会使用它存储的刷新令牌来生成新的访问令牌。使用访问令牌与 EnvelopeViews:createRecipient API 方法获取签名仪式 URL.