DocuSign-使用管理员同意响应代码获取用户ID?

时间:2020-05-19 02:34:02

标签: jwt docusignapi

我正在尝试将DocuSign集成到我们的系统中。我从文档中了解到,我们需要使用JWT身份验证,因为我们需要组织管理员的许可,然后,用户在请求签名时不需要登录。

这是我用于获得管理员同意的网址:

https://account-d.docusign.com/oauth/auth?response_type=code&scope=openid&client_id=0d055e7d-xxxx-xxxx-xxxx-0718d22b58b1&admin_consent_scope=signature%20impersonation&state=esignature_docusign&redirect_uri= Callback_URL

成功调用回调URL,并返回如下代码:

Callback_URL?state = esignature_docusign&code = ConsentResponseCode

但是,这里有两个问题:

  1. ConsentResponseCode是JWT格式的有效代码,但是有效载荷为空,标头如下所示:
{
  "typ": "MT",
  "alg": "RS256",
  "kid": "68185ff1-xxxx-xxxx-xxxx-689812203317"
}
  1. 如果我使用该代码执行授权授予登录,它将返回错误(即使在收到ConsentResponseCode之后的几秒钟内):
{
    "error": "invalid_grant",
    "error_description": "expired_client_token"
}

这使我们无法通过电子邮件查找用户。

问题是:

  1. 如何获取 UserID 来创建JWT请求?

  2. 我需要分别获得同意并为组织管理员帐户执行授权授予吗?

2 个答案:

答案 0 :(得分:1)

  1. UserId是一个GUID,登录到应用程序后,您可以在DocuSign的admin部分中找到它。在创建集成密钥的同一位置上,既有AccountID和UserId,又有两个不同的GUID,并且都需要它们。
  2. 您只需要征得用户的同意,您的应用就会冒充您的应用。返回到您要求的#1 userID。如果您选择了一个用户ID,则该用户必须同意。如果您有两个用户-user1和user2,并且您在JWT中只有用户user1 ID,则user2不需要同意。如果您想使用两者之一,则需要双方同意。 组织级别的同意允许您一次为所有用户执行此操作,但是需要您创建一个组织并对其进行管理。

答案 1 :(得分:1)

您从同意过程中收到的代码实际上是授权代码授予流程的代码。您应该只丢弃该代码(完全忽略它)。

请记住,您要模拟的每位用户都必须获得一次同意。同意记录由DocuSign维护,它不是cookie或任何短暂的东西。

仅当用户明确撤回了他们先前授予您的同意时,您才需要重复同意过程。