为了确保 Webhook 请求确实来自Ragic、且内容未被窜改,设置为“发送更改记录的完整内容”的 Webhook,发出的请求会附带一个 signature。
您可以在接收到 Webhook 后,使用我们提供的公钥验证该签名是否正确。
若验证失败,表示该请求可能已被窜改,建议拒绝处理。
1.1. 取出 Webhook 请求中的 data 属性。 (data 属性应该为 JSONArray 格式)
1.2. 将其序列化为 单击照 key 名字排序、无缩排、无换行 的 JSON 字符串。可以理解为“将JSONArray中,物件的所有字段依照字母顺序重新排序,然后引出一行 JSON”。
// 转换前 (源 data 属性): [ { "1001030":"banana", "1001029":"apple" } ] // 转换后 (string-to-sign): [{"1001029":"apple","1001030":"banana"}]
注意:若序列化方式与我们不一致,会导致签名验证失败。
2.1. 取出 Webhook 请求中的 signature 属性。
2.2. 下载公钥(参阅 获取公钥)。
2.3. 使用支持 SHA256withRSA 的验签工具。
2.4. 验证结果若为成功,表示请求来自Ragic且内容未被窜改。
我们提供两种方式供您获取公钥,请选择最适合您的情境:
1. 直接获取公钥字符串,请调用:https://www.ragic.com/api/http/getWebhookSignaturePublicKey.jsp?type=string。
2. 点击 这里 下载 PEM 檔。
建议将公钥高速缓存在您的服务器上,仅在启动时重新下载。