Azure Logic Apps生成的HMAC-SHA256方法签名 [英] Azure Logic Apps - generated HMAC-SHA256 method signature
本文介绍了Azure Logic Apps生成的HMAC-SHA256方法签名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望构建一个Logic App工作流来连接到REST API,以从释放的API(https://apidocs.unleashedsoftware.com/AuthenticationHelp)获取产品列表(作为JSON返回)。
我已经在postmaan中原型化了GET请求,并在Pre-Request脚本中成功生成了所需的HMAC-SHA256加密方法签名。现在,我需要找到一种方法在我的Logic Apps工作流中执行相同的操作。
在了解到Logic Apps内联代码组件只能提供基本的Java脚本(不能访问加密函数)后,我想到了在node.js-node.js中编写Azure函数,以便能够重用我预先请求的脚本代码。不幸的是,我在这方面一无所获--垂直学习曲线不能完全覆盖它! 首先,不是有某种内联触发器允许我访问该函数而不必发送HTTP请求吗?如何填充输出绑定以取回散列值?我的请求前脚本如下
var urlParam = "modifiedSince2021-04-01";
var url = "https://api.unleashedsoftware.com/" + "Products?" + urlParam;
var hash = CryptoJS.HmacSHA256(urlParam, 'Customer API-KEY here');
var hash64 = CryptoJS.enc.Base64.stringify(hash);
pm.environment.set("BaseURI", url);
pm.environment.set("hmacKey", hash64);
在构建我的node.js方面的任何帮助,或者在Azure中将其转换为解决方案的任何其他建议,我们都将不胜感激。
推荐答案
如果要在Azure逻辑应用程序中运行自己的节点代码,可以使用内联代码操作或azure函数操作。但如果我们想要与一些第三方程序包一起运行节点代码,我们只能使用Azure函数动作。同时,当我们使用Azure函数操作时,该函数必须使用HTTP触发器模板。详情请参考here和here。
例如
- 在您的函数应用程序中定义Azure函数
const CryptoJS = require("crypto-js");
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
//get the data used to sign from request body
const data = req.body.data
// sign
const str = CryptoJS.HmacSHA256(
CryptoJS.enc.Utf8.parse(req.body.data),,
"key"
);
const sig = CryptoJS.enc.Base64.stringify(str);
context.res = {
body: sig // return the hash
};
}
- 在Azure逻辑应用程序中调用该函数
这篇关于Azure Logic Apps生成的HMAC-SHA256方法签名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文