如何验证Weavy Webhook签名?签名验证代码计算错误排查
Weavy Webhook签名验证失败的问题修复
你的代码核心问题是哈希字节的编码方式错误:
- Weavy发送的签名是基于HMACSHA256哈希的Base64编码字符串,但你直接把哈希二进制字节转成了UTF8字符串,这会导致字符串不匹配。
修改后的验证代码:
public static bool Verify(string signature, string body, string secret) { using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret))) { var hashBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(body)); var computedSignature = Convert.ToBase64String(hashBytes); return computedSignature.Equals(signature); } }
额外注意事项:
- 确保接收请求时没有修改请求体(比如自动解析后重新序列化,可能会改变空格、换行或JSON结构),必须使用原始的请求体字节流计算哈希。
- 确认签名头部的取值正确,要确保你获取的是Weavy发送的完整签名值。
内容的提问来源于stack exchange,提问作者anderssonola
相关产品推荐
相关产品推荐

