Azure 逻辑应用程序 - 生成的 HMAC-SHA256 方法签名
Azure Logic Apps - generated HMAC-SHA256 method signature
我正在寻求构建一个逻辑应用程序工作流程以连接到 REST API 以从 Unleashed API(https://apidocs.unleashedsoftware.com/AuthenticationHelp ).
我已经在 postma 中制作了 GET 请求的原型,并在预请求脚本中成功生成了所需的 HMAC-SHA256 加密方法签名。现在我需要找到一种方法在我的逻辑应用程序工作流程中做同样的事情。
发现逻辑应用程序内联代码组件除了基本 Javascript(无法访问加密函数)之外什么也不会给我,我想在 node.js 中编写一个 Azure 函数 - node.js 选择主要是为了能够重用我的预请求脚本代码。不幸的是,我对此一无所知 - 垂直学习曲线并没有完全涵盖它!
一方面,是否有某种内联触发器允许我访问函数而不必发送 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 logic 应用程序中,你可以使用内联代码操作或 azure 函数操作。但是如果我们想运行节点代码与一些第三方包,就只能使用Azure函数操作了。同时,当我们使用 Azure 函数操作时,该函数必须使用 HTTP 触发器模板。详情请参考here and 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 函数 returns 的哈希数据调用 API。我们可以使用表达式 @{body('<action name>')}
来获取哈希数据。例如
测试结果
我正在寻求构建一个逻辑应用程序工作流程以连接到 REST API 以从 Unleashed API(https://apidocs.unleashedsoftware.com/AuthenticationHelp ).
我已经在 postma 中制作了 GET 请求的原型,并在预请求脚本中成功生成了所需的 HMAC-SHA256 加密方法签名。现在我需要找到一种方法在我的逻辑应用程序工作流程中做同样的事情。
发现逻辑应用程序内联代码组件除了基本 Javascript(无法访问加密函数)之外什么也不会给我,我想在 node.js 中编写一个 Azure 函数 - node.js 选择主要是为了能够重用我的预请求脚本代码。不幸的是,我对此一无所知 - 垂直学习曲线并没有完全涵盖它!
一方面,是否有某种内联触发器允许我访问函数而不必发送 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 logic 应用程序中,你可以使用内联代码操作或 azure 函数操作。但是如果我们想运行节点代码与一些第三方包,就只能使用Azure函数操作了。同时,当我们使用 Azure 函数操作时,该函数必须使用 HTTP 触发器模板。详情请参考here and 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 函数 returns 的哈希数据调用 API。我们可以使用表达式
@{body('<action name>')}
来获取哈希数据。例如测试结果