現象
你的 Webhook 端點收到了請求,但簽名驗證失敗。常見原因
- 框架在驗簽前解析或重新格式化了 JSON。
- 驗簽程式使用了錯誤的 Webhook 密鑰。
- 中介軟體修改了請求體的空格、編碼或欄位順序。
- 時間戳被當成秒處理,而不是 Unix 毫秒。
- 待簽名字串拼接格式錯誤。
- 簽名比較沒有使用恆定時間比較函式。
在 Kyren 中檢查
- 從開發者設定複製目前 Webhook 密鑰。
- 確認請求標頭包含
X-Kyren-Signature和X-Kyren-Timestamp。 - 確認時間戳是毫秒級時間戳,例如
1736932200000。
在你的伺服器檢查
- 在 JSON 解析前,使用原始請求體位元組進行驗簽。
- 按
timestamp + "." + raw_body建構待簽名字串。 - 使用 Webhook 密鑰計算
sha256=加 HMAC-SHA256 摘要。 - 使用恆定時間函式比較預期簽名和收到的簽名。