為了確保 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 檔。
建議將公鑰快取在您的伺服器上,僅在啟動時重新下載。