使用Organization Admin的DocuSign服务集成身份验证可对应用授予同意并冒充所有人

时间:2018-07-27 03:22:48

标签: jwt docusignapi

我已经成功地使用服务集成身份验证来创建信封。这是我为验证用户身份而执行的步骤。

  1. 通过将组织管理员A重定向到以下URL来分别授予他们同意:

    https://account-d.docusign.com/oauth/auth? response_type=code&scope=signature%20impersonation&client_id=7c2b8d7e-83c3-4940-af5e-cda8a50dd73f&redirect_uri=https://client.example.com/callback

    在组织管理员A单击“接受”之后,即表示同意

  2. 使用SDK中提供的代码创建JWT,这是我在JWT中提供的信息:

    { "iss": {integrator key}, "sub": <user ID of Organization Admin A>, "iat": <timestamp when issued>, "exp": <expiration date>, "aud": "account-d.docusign.com", "scope": "signature impersonation" }

  3. 使用此生成的Jwt,我向POST发出了https://account-d.docusign.com/oauth/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={JWT}请求,以交换访问令牌

  4. 使用该生​​成的访问令牌,我已经成功创建了信封

因此,在此阶段,我确认我已经正确生成了JWT,正确创建了Integrator Key,并且在create JWT请求中也提供了正确的信息。

然后我从我的应用程序中意识到,如果我不必一直都执行步骤1,那将是理想的选择。我想在没有UI(重定向URL)的情况下表示同意,并能够模拟组织中的每个人。所以这就是我所做的:

  1. 创建了另一个组织管理员:Organization AdminB。由于Admin A已经同意,因此不再适合我的测试。这两个用户都是具有权限集“组织”的组织管理员。
  2. 然后我转到“应用程序”并单击“授权应用程序”,并将其链接到正确的集成商密钥,权限:“签名模拟”
  3. 从这里我创建了JWT,现在有效负载中唯一更改的信息是指向Organization Admin B的userId:

    { "iss": {integrator key}, "sub": <user ID of Organization Admin B>, "iat": <timestamp when issued>, "exp": <expiration date>, "aud": "account-d.docusign.com", "scope": "signature impersonation" }

  4. JWT产生了我继续向POST发出https://account-d.docusign.com/oauth/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={JWT}请求以交换访问令牌,这就是我得到的:

    { "error": "consent_required" }

如果我已经“授权申请”,怎么需要同意?

我也尝试在JWT请求中省略userId,因为根据此blog post

  

您要为其请求令牌的主体的用户ID。如果   省略,将发出令牌来代表应用程序本身   而不是系统中的用户。

基本上就是我想要的。但是当我生成JWT并成功生成访问令牌时,如下所示:

{ "access_token":"", "token_type":"Application", "expires_in":28800 }

请注意,token_type现在是“应用程序”而不是“承载者” ,当我尝试使用该访问令牌创建一个信封时,我将得到“用户名或密码”未正确的提示。

{ "errorCode":"USER_AUTHENTICATION_FAILED", "message":"One or both of Username and Password are invalid. Invalid access token" }

这是如此令人困惑,因为没有一篇文章逐步介绍如何使用Organization Admin Tool来授予对应用程序的同意并冒充所有人。大多数文章仅涉及个人授予同意。有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

目前,您只能将组织授权授予您的组织拥有的集成商密钥,并且该同意仅适用于声明的域内的用户。

因此,如果您的组织声明了example.com的所有权,则可以授予user@example.com的同意,但不能授予user@gmail.com的同意。

要授予组织同意,请导航至组织管理控制台>应用程序>授权应用程序。从“选择应用程序”下拉列表中,您将看到与组织内的帐户相关联的所有集成商密钥。从那里,您可以授予组织范围的同意。