You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求可API调用的RS256格式JWT编码器以实现DocuSign集成

可行解决方案

方案1:Make.com + 云函数(AWS Lambda/Google Cloud Function)

适合熟悉Python的场景,云函数可稳定处理批量POST请求,且能和Make无缝集成。

步骤1:部署Python云函数

以AWS Lambda为例:

  • 创建Lambda函数,选择Python 3.10+运行时。
  • 在函数代码中粘贴以下脚本:
import jwt
import time
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/generate-jwt', methods=['POST'])
def generate_jwt():
    data = request.get_json()
    # 从请求体获取参数
    integration_key = data.get('iss')
    user_id = data.get('sub')
    private_key = data.get('private_key')
    aud = data.get('aud', 'account-d.docusign.com')
    
    # 构造JWT Header和Payload
    header = {"alg": "RS256", "typ": "JWT"}
    payload = {
        "iss": integration_key,
        "sub": user_id,
        "aud": aud,
        "iat": int(time.time()),
        "exp": int(time.time()) + 6000,
        "scope": "signature impersonation"
    }
    
    # 生成JWT
    try:
        token = jwt.encode(payload, private_key, algorithm="RS256", headers=header)
        return jsonify({"jwt_token": token})
    except Exception as e:
        return jsonify({"error": str(e)}), 400

# Lambda适配层
def lambda_handler(event, context):
    from werkzeug.wrappers import Request, Response
    request = Request(event)
    with app.request_context(request.environ):
        response = app.full_dispatch_request()
        return Response(response.get_data(), status=response.status_code, headers=dict(response.headers)).get_wsgi_response()
  • 在Lambda的层中添加PyJWT和cryptography依赖(或直接打包包含依赖的代码包部署)。
  • 配置Lambda触发器为API Gateway,开启POST方法,获取可访问的API URL。

步骤2:Make.com中调用云函数

  • 在Make场景中添加「HTTP」模块,选择「Make a request」。
  • 设置请求方法为POST,填入API Gateway的URL。
  • 请求体选择「Raw」,格式为JSON,传入参数:
{
  "iss": "<你的集成密钥>",
  "sub": "<用户ID>",
  "private_key": "<你的RSA私钥(换行转义为\\n)>",
  "aud": "account-d.docusign.com"
}
  • 注意:私钥请用Make的加密字段存储,避免明文泄露。

方案2:直接在Make.com中用Node.js代码生成JWT

无需外部服务,直接利用Make的「Run JavaScript」模块和jsonwebtoken库实现。

步骤:

  1. 在Make场景中添加「Run JavaScript」模块。
  2. 输入以下代码,配置输入参数:
const jwt = require('jsonwebtoken');

// 从Make输入变量获取参数
const iss = inputData.integration_key;
const sub = inputData.user_id;
const privateKey = inputData.private_key.replace(/\\n/g, '\n'); // 处理转义换行符
const aud = inputData.aud || 'account-d.docusign.com';

const payload = {
  iss: iss,
  sub: sub,
  aud: aud,
  iat: Math.floor(Date.now() / 1000),
  exp: Math.floor(Date.now() / 1000) + 6000,
  scope: 'signature impersonation'
};

const token = jwt.sign(payload, privateKey, { algorithm: 'RS256', header: { alg: 'RS256', typ: 'JWT' } });

return { jwt_token: token };
  1. 在模块「Input」标签中添加输入字段:integration_key、user_id、private_key(可选aud),绑定对应变量。
  2. 运行模块即可得到JWT,后续直接用于DocuSign访问令牌请求。

方案3:Heroku托管Flask API

若偏好Python且需更灵活部署,可托管Flask API:

步骤:

  1. 创建项目文件:
  • app.py(内容同方案1的Flask代码)
  • requirements.txt:
Flask==2.3.3
PyJWT==2.8.0
cryptography==41.0.5
gunicorn==21.2.0
  • Procfile:
web: gunicorn app:app
  1. 部署到Heroku:
  • 用Heroku CLI登录,创建应用并推送代码。
  • 部署完成后获取应用URL,如https://your-app-name.herokuapp.com/generate-jwt。
  1. 在Zapier或Make中通过POST请求调用该URL,传入参数生成JWT。

内容的提问来源于stack exchange,提问作者Joshua Mentrup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:37:03