我已经成功地使用服务集成身份验证来创建信封。这是我为验证用户身份而执行的步骤。
通过将组织管理员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单击“接受”之后,即表示同意
使用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"
}
使用此生成的Jwt,我向POST
发出了https://account-d.docusign.com/oauth/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={JWT}
请求,以交换访问令牌
使用该生成的访问令牌,我已经成功创建了信封
因此,在此阶段,我确认我已经正确生成了JWT,正确创建了Integrator Key,并且在create JWT请求中也提供了正确的信息。
然后我从我的应用程序中意识到,如果我不必一直都执行步骤1,那将是理想的选择。我想在没有UI(重定向URL)的情况下表示同意,并能够模拟组织中的每个人。所以这就是我所做的:
从这里我创建了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"
}
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来授予对应用程序的同意并冒充所有人。大多数文章仅涉及个人授予同意。有人可以帮我吗?
谢谢。
答案 0 :(得分:1)
目前,您只能将组织授权授予您的组织拥有的集成商密钥,并且该同意仅适用于声明的域内的用户。
因此,如果您的组织声明了example.com的所有权,则可以授予user@example.com的同意,但不能授予user@gmail.com的同意。
要授予组织同意,请导航至组织管理控制台>应用程序>授权应用程序。从“选择应用程序”下拉列表中,您将看到与组织内的帐户相关联的所有集成商密钥。从那里,您可以授予组织范围的同意。