在Azure函数HTTP触发器中实现HMAC



我被要求在Azure Function中实现HMAC,该功能接收web挂钩请求,但我找不到能让我知道如何做到这一点的文档。任何建议都会很有帮助。

这不是azure函数本机可以做的事情。您需要编写一些自定义代码来完成以下操作:

  1. 检索从webhook发送方发送的HMAC签名。这可能会作为您接收的HttpRequestData对象上的标头发送(假设这是azure函数v4(。

  2. 使用您和webhook发送方之间共享的密钥,计算请求主体的哈希。您可以使用System.Security.Cryptography.HMACSHA256类来执行此操作

public string ComputeHMAC(string data, string key)
{
var dataBytes = Encoding.ASCII.GetBytes(data);
var keyBytes = Encoding.ASCII.GetBytes(key);
var hmacHash = HMACSHA256.HashData(keyBytes, dataBytes);
var hashSB = new StringBuilder();
for (int i = 0; i < hmacHash.Length; i++)
{
hashSB.Append(hmacHash[i].ToString("x2"));
}
return hashSB.ToString();
}
  1. 将您计算的哈希与从webhook发送方收到的哈希进行比较。如果散列不匹配,则需要拒绝webhook请求

如果您需要在不同的azure函数中这样做,您可以更进一步,编写一个HMAC中间件。

最新更新