如何基于JWT(用户同意)实现SOBO信封创建功能?
实现DocuSign JWT集成下的SOBO(代表其他用户创建信封)功能
要实现以指定非JWT认证用户的身份创建信封,你可以利用DocuSign的**Send On Behalf Of (SOBO)**机制,具体操作步骤如下:
1. 确认管理员用户具备SOBO权限
首先得确保你的JWT认证管理员用户拥有代表其他用户操作的权限:
- 如果该用户是账号管理员,默认就具备SOBO权限;
- 如果是非管理员用户,需要登录DocuSign控制台,在用户权限设置中为其开启Send On Behalf Of权限。
2. 在API请求中添加SOBO专属请求头
当调用创建信封的API时,只需在请求头里加上X-DocuSign-Act-As-User字段,值填你想要代表的目标用户的UUID格式用户ID就行。这个请求头会告诉DocuSign:当前JWT认证的管理员用户正在替目标用户执行操作,最终信封会以目标用户的身份创建。
示例:REST API请求头
POST /restapi/v2.1/accounts/{account_id}/envelopes HTTP/1.1 Host: demo.docusign.net Authorization: Bearer {你的JWT访问令牌} Content-Type: application/json X-DocuSign-Act-As-User: 123e4567-e89b-12d3-a456-426614174000 // 替换为目标用户的UUID
示例:Python SDK代码实现
如果你用DocuSign官方SDK开发,可以通过设置客户端默认请求头来快速实现:
from docusign_esign import ApiClient, EnvelopesApi from docusign_esign.models import EnvelopeDefinition, Signer, SignHere, Tabs, Recipients # 初始化API客户端 api_client = ApiClient() # 设置SOBO头:指定要代表的用户ID api_client.set_default_header("X-DocuSign-Act-As-User", "目标用户的UUID") # 传入JWT获取的访问令牌 api_client.set_access_token("你的JWT访问令牌") # 构建信封基础定义 envelope_definition = EnvelopeDefinition( email_subject="请签署这份文档", status="sent" ) # 添加签署人及签署位置(可根据实际需求调整) signer = Signer(email="signer@example.com", name="签署人姓名", recipient_id="1") sign_here = SignHere(document_id="1", page_number="1", x_position="100", y_position="100") signer.tabs = Tabs(sign_here_tabs=[sign_here]) envelope_definition.recipients = Recipients(signers=[signer]) # 此处可添加要发送的文档(省略文档上传逻辑) # 调用API创建信封 envelopes_api = EnvelopesApi(api_client) response = envelopes_api.create_envelope("你的账号ID", envelope_definition=envelope_definition)
3. 关键注意事项
- 目标用户必须是当前DocuSign账号下的有效用户,跨账号无法使用SOBO功能;
- JWT认证的管理员用户必须能访问目标用户所在的账号;
- 只有具备SOBO权限的用户,才能使用
X-DocuSign-Act-As-User请求头,否则会返回权限错误。
内容的提问来源于stack exchange,提问作者pranav daipuria
相关产品推荐
相关产品推荐

