是否有生成DocuSign OAuth2 JWT的VBA类?Access 2016迁移求助
VBA实现DocuSign OAuth2 JWT认证的库引用与实现方案
所需VBA库引用
- Microsoft Scripting Runtime:用于构造和序列化JWT的Header/Payload JSON结构
- CAPICOM 2.0 Type Library:支持SHA256哈希与RSA签名操作(32位系统默认兼容,需确保已安装)
- 若CAPICOM不可用,可替代为Microsoft RSA Cryptography Provider 1.0:专门处理RSA加密签名
实现步骤方向
构造JWT核心组件
- Header固定为
{"alg":"RS256","typ":"JWT"},用Scripting.Dictionary构建后序列化为JSON字符串 - Payload需包含DocuSign要求的必填字段:
iss:你的DocuSign集成商密钥(Integrator Key)sub:授权用户的DocuSign用户IDaud:环境域名(测试用account-d.docusign.com,生产用account.docusign.com)exp:过期时间戳(当前Unix时间+3600秒,不超过1小时)scope:权限范围,固定为signature impersonation
- Header固定为
Base64URL编码处理
- 对Header和Payload分别做标准Base64编码,再转换为JWT要求的Base64URL格式:
- 替换
+为-,/为_ - 移除末尾所有
=填充字符
- 替换
- 若未引用Base64库,可自行实现VBA编码函数(成熟的Base64/VBA实现代码可直接复用)
- 对Header和Payload分别做标准Base64编码,再转换为JWT要求的Base64URL格式:
生成RSA-SHA256签名
- 拼接编码后的Header与Payload:
encodedHeader + "." + encodedPayload - 读取你的RSA私钥(需为PKCS#8格式,去掉PEM首尾行和换行,转成Base64字符串后解码为字节流)
- 使用CAPICOM的
Hash和SignedData对象,对拼接后的字符串做SHA256哈希并签名 - 对签名结果再次做Base64URL编码
- 拼接编码后的Header与Payload:
拼接完整JWT
- 将编码后的Header、Payload、签名用
.连接,得到最终可用于认证的JWT字符串
- 将编码后的Header、Payload、签名用
验证与调用API
- 生成的JWT可在JWT.IO上验证格式和签名正确性
- 调用DocuSign的OAuth2令牌接口,参数
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer,assertion=生成的JWT,获取access token后即可调用其他DocuSign API
关键注意事项
- 确保所有引用库为32位版本,适配Access 2016 32位环境
- 私钥请勿硬编码在代码中,建议存储在加密文件或安全的注册表项中
exp字段必须设置为当前时间1小时内的时间戳,否则DocuSign会拒绝认证
内容的提问来源于stack exchange,提问作者PSD
相关产品推荐
相关产品推荐

