DocuSign-OAuth授权代码授予-多个用户-提取访问权限和刷新令牌时出错

时间:2018-07-12 03:17:38

标签: docusignapi

我们正在尝试将DocuSign与我们的产品集成。

我们的方案:我们的组织有一个(合作伙伴)帐户。我们创建了一个集成商密钥(ClientID)和密钥。我们希望我们的客户使用他们自己的帐户(不是我们的合作伙伴帐户的子帐户(管理员帐户-用户关系))来创建信封,并生成签名URL以及我们的集成商密钥和机密。

遵循的步骤:

  1. 创建了一个帐户(合作伙伴帐户)。
  2. 创建了集成商密钥和机密。
  3. 我们的方案被视为用户应用程序,并使用授权代码授予机制获取身份验证代码。
  4. 客户端将重定向到DocuSign门户以进行身份​​验证。 (通过将集成商密钥作为参数使用授权码授予机制)
  5. 客户同意我们的应用程序使用其凭据创建信封。
  6. 接收身份验证代码。
  7. 使用客户身份验证代码和合作伙伴帐户集成商密钥和机密,尝试获取刷新和访问令牌。但是DocuSign API( OAuth /令牌)正在以“错误请求” (400)作为响应进行回复。
  8. 如果我们使用相同的合作伙伴帐户凭据,则代替客户帐户,则API(OAuth /令牌)将使用正确的刷新令牌和访问令牌进行响应。

问题:是否可以将一个帐户的集成商密钥和机密信息与另一个帐户(两个帐户都没有任何关系(管理员用户))的身份验证代码一起使用,以获取访问令牌和刷新令牌。

使用的API:

获取身份验证代码-https://account-d.docusign.com/oauth/auth(DocuSign门户中的合作伙伴帐户(集成商密钥和机密)和客户端用户凭据)

获取访问权限/刷新令牌-https://account-d.docusign.com/oauth/token(来自先前响应和base64(集成商密钥:秘密)的身份验证代码)

原因:我们不想存储用户凭据,也不希望用户每次想在我们的应用程序中使用其DocuSign帐户时登录。因此,我们希望征得用户的同意并与我们一起存储他们的刷新令牌。下次使用它们的刷新令牌和我们的集成商密钥来调用DocuSign API。

1 个答案:

答案 0 :(得分:0)

更新

(我在DocuSign工作。)

通过提供给DocuSign的其他信息,我们能够找到失败的OP的OAuth事务的内部日志。从内部日志中我们可以看到,实际上问题是授权代码已过期。

在OAuth流程中,应用程序收到授权码后,应立即转过身来并使用它来获取访问和刷新令牌以及相关信息。我们将更新我们的文档以明确说明此问题。

原始答案

您所做的一切都听起来很正确。尤其是因为用户通过您的应用程序登录DocuSign后,第一次收到权限屏幕。

要直接回答您的问题:是的,应用程序可以将客户端ID(集成密钥)用于任何DocuSign帐户上的任何DocuSign用户。

一个想法:您的应用程序在收到授权码后是否立即请求令牌?几分钟后,授权代码本身就会超时。

您说的是,如果用户A登录有效(用户A属于管理客户端ID的帐户),但是如果用户B登录无效?我以前没看过那个问题。我将使用用户C创建一个新的演示开发人员沙箱,并让他们尝试登录。

所有这些都在演示或生产中吗?