【发布时间】:2020-12-13 17:06:47
【问题描述】:
我正在尝试使用 .NET CORE 3.1 验证从 Github Webhook 传递的 Function App Secret Key。。 p>
在我的 Github webhook 中,我将 Azure 函数 中的默认密钥插入到 "Secret" 字段中。现在,我正在尝试在我的代码中验证它。由于某种原因,我的加密密钥与 webhook 中的不同。
注意:来自 Github Webhook 的 Secret 使用 SHA1 算法加密。
代码:
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
var secretKey = "my_key";
StringValues outHeader;
if (req.Headers.TryGetValue("x-hub-signature", out outHeader))
{
log.LogWarning("==========");
log.LogWarning(outHeader);
log.LogWarning(GetHash(secretKey));
log.LogWarning("==========");
}
string responseMessage = "Everything went well!";
return new OkObjectResult(responseMessage);
}
public static string GetHash(string input)
{
return "sha1=" + string.Join("",
(new SHA1Managed()
.ComputeHash(Encoding.UTF8.GetBytes(input)))
.Select(x => x.ToString("x2"))
.ToArray());
}
输出:
2020-12-13T16:46:47.592 [Warning] ==========
2020-12-13T16:46:47.592 [Warning] sha1=f859bebbf5ec452a7ecd42efc69e0d86a4f25b16
2020-12-13T16:46:47.593 [Warning] sha1=fa1167715f137edff21d55d00adf63afb318b2a6
2020-12-13T16:46:47.593 [Warning] ==========
Official docs 仅涵盖 Node.js 解决方案。
在 .NET CORE 3.1 中验证 Github Webhook Secret 的正确方法是什么?感谢您的帮助。
【问题讨论】:
标签: c# azure github .net-core webhooks