Power Apps/D365集成DocuSign:自定义连接器如何代其他用户创建信封
这是首次在社区发帖,若存在表述不清的情况还请见谅。
在Power Apps中搭建了对接DocuSign账户的自定义连接器,当前调用的API接口为DocuSign创建信封接口,接口路径为:/restapi/v2.1/accounts/{accountId}/envelopes
对应接口说明可参考DocuSign开发者平台eSignature Rest API文档中Envelopes分类下的create接口说明。
当前遇到的问题:无法通过现有连接器的API调用实现代其他DocuSign用户创建信封的效果。配置自定义连接器时使用个人DocuSign账号完成登录授权,所有通过连接器调用API生成的信封都会自动关联到该个人DocuSign账户,登录该账号后可在「草稿」文件夹中查看到所有生成的信封。
最终需求:在Canvas App中接入该自定义连接器及对应API能力,供全量终端用户使用,需要避免接口创建的信封始终关联授权时使用的个人DocuSign账户,防止其他用户操作生成的信封全部归属到个人名下。
现有测试佐证材料包括:测试调用请求截图、测试调用响应截图、DocuSign账户内信封展示截图。
问题核心原因是当前自定义连接器采用单用户OAuth2.0授权模式,所有接口调用的身份上下文都绑定为授权时使用的个人账号,因此生成的信封默认归属到该账号下。可根据实际场景选择以下方案实现需求,生产环境优先推荐第一种方案:
- 方案一:切换为JWT服务集成认证模式(适配全量用户使用的生产场景)
- 登录DocuSign eSignature管理后台,新建服务类型集成密钥,生成RSA密钥对,为该集成申请
signature、impersonation两个权限范围的租户级管理员同意,允许集成代表租户内任意合法用户调用接口。 - 调整Power Apps自定义连接器的认证配置,替换原有的单用户OAuth2.0登录逻辑,在连接器的安全配置或内置代码段中实现JWT令牌生成逻辑:JWT负载中携带目标用户的DocuSign用户ID/绑定邮箱作为
sub字段、集成密钥作为iss字段,使用RSA私钥签名后换取接口访问令牌。 - 调用创建信封接口时,将路径参数
{accountId}替换为目标用户所属的账户ID,同时在请求体中增加sendOnBehalfOf字段,值为实际操作用户的DocuSign绑定邮箱,此时生成的信封会直接归属到对应目标用户账户下,不会挂在授权的服务账号名下。
注意:RSA私钥、集成密钥等敏感信息禁止硬编码在Canvas App前端代码中,必须存放在自定义连接器的后端安全配置或中间层服务中,避免凭据泄露。
- 登录DocuSign eSignature管理后台,新建服务类型集成密钥,生成RSA密钥对,为该集成申请
- 方案二:新增Power Automate中间代理层(无需重构现有连接器认证逻辑)
- 移除Canvas App直接调用自定义连接器的逻辑,所有信封创建请求统一提交到前置Power Automate流处理。
- 在流中配置DocuSign连接的动态身份切换逻辑,提前通过租户管理员同意为所有终端用户开通DocuSign接口访问权限,流运行时自动获取当前发起请求的Canvas App用户的身份上下文,以对应用户身份调用创建信封接口,信封自然归属到实际操作用户名下。
- 方案三:调整现有接口请求参数(适合快速测试验证场景)
如果当前使用的集成已经开通了用户模拟权限,无需修改认证配置,仅调整请求参数即可实现效果:将接口路径中硬编码的个人accountId替换为目标用户的accountId,同时在请求体中传入sendOnBehalfOf字段指定实际发件人邮箱,生成的信封会归属到目标用户账户下,不会出现在个人账号的草稿箱中。
调试阶段可先调用DocuSign用户信息查询接口,校验当前令牌对应的用户身份、账户ID是否与目标用户匹配,确认身份无误后再发起信封创建请求,避免信封归属错误。
内容的提问来源于stack exchange,提问作者Lazodomi

