如何在Postman中使用SHA-1动态密钥

时间:2016-05-19 21:06:56

标签: javascript security sha postman

我试图使用Postman发送GET http请求,其中包含一个参数,该参数是通过获取完整请求查询字符串动态生成的(URL编码后,URL中问号右侧的所有内容) ,连接先前分配的共享密钥,然后对结果字符串执行SHA-1哈希。

我会使用预请求脚本来实现此目的。

谢谢。

2 个答案:

答案 0 :(得分:7)

我实际上找到了一个解决方案并想分享它。

var params = [
    ["client_id", "222"]
    ,["account_id", ""]
];

// Build the request body string from the Postman request.data object
var requestBody = "";
var firstpass = true;
for(var i=0;i < params.length; i++) {
        if(!firstpass){
            requestBody += "&";
        }
        requestBody += params[i][0] + "=" + params[i][1];
        firstpass = false;
        postman.setGlobalVariable(params[i][0], params[i][1]);
}
requestBody += postman.getEnvironmentVariable("sharedSecretKey");
postman.setGlobalVariable("requestBody", requestBody);

var mac = "";
if(requestBody){
    // SHA1 hash
    mac = CryptoJS.SHA1(requestBody);
}

postman.setGlobalVariable("mac", mac);

然后我只需要在URL中设置参数: {{的baseUrl}} /获取的client_id = {{CLIENT_ID}}&安培; ACCOUNT_ID = {{ACCOUNT_ID}}&安培; MAC = {{MAC}}

其中{{baseUrl}}是一个环境变量 和{{client_id}},{{account_id}}是全局变量

希望它对某人有所帮助。

谢谢。

答案 1 :(得分:1)

this answer的启发,我使用以下Postman预请求脚本创建了请求的SHA1哈希。

请注意,request.data是一个隐含变量,CryptoJS库由Postman Sandbox for pre-request scripts提供。

const hash = CryptoJS.HmacSHA1(request.data, 'yourSecret');
pm.globals.set('hash', hash);

您现在可以使用{{hash}}语法将哈希值作为邮递员全局变量引用。


创建类似GitHub API Webhook请求的X-Hub-Signature标头

我所有目的都是为了模拟X-Hub-Signature提供的GitHub Webhooks API头,因为我的Web服务会验证所有webhook负载以匹配签名。因此,为了测试我的Web服务,我还需要邮差来生成有效的签名标头。

这里是上述代码段的变体,用于生成X-Hub-Signature请求标头值。

  1. 在GitHub中,我为webhook secret设置了GitHub App

github webhook secret

  1. 在邮递员中,我创建了一个environment,并添加了创建我的GitHub应用程序时指定的值的键=值对GITHUB_WEBHOOK_SECRET

postman environment variable

  1. 在邮递员中,我使用了以下预请求脚本。它将计算出的哈希值设置为全局变量。
const hash = CryptoJS.HmacSHA1(
    request.data,
    pm.environment.get('GITHUB_WEBHOOK_SECRET')
);
pm.globals.set('X-HUB-SIGNATURE', 'sha1=' + hash);
  1. 在Postman中,我将全局哈希变量作为请求中的标头引用,就像GitHub Webhooks API一样。

postman request header