Azure Logic Apps生成的HMAC-SHA256方法签名 [英] Azure Logic Apps - generated HMAC-SHA256 method signature

查看:20
本文介绍了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触发器模板。详情请参考herehere

例如

  1. 在您的函数应用程序中定义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
     };
}
  1. 在Azure逻辑应用程序中调用该函数

  1. 使用azure函数返回的哈希数据调用接口。我们可以使用表达式@{body('<action name>')}来获取散列数据。例如

  2. 测试结果

这篇关于Azure Logic Apps生成的HMAC-SHA256方法签名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆