Webhook / signature / replay boundary
Webhook署名とreplay条件を分ける
受信時に混同しやすい署名、timestamp、replay、idempotencyを合成caseで確認します。実Webhookやsecretは扱わず、受信レビュー票だけをローカルで作ります。
Webhook / signature / replay boundary
受信時に混同しやすい署名、timestamp、replay、idempotencyを合成caseで確認します。実Webhookやsecretは扱わず、受信レビュー票だけをローカルで作ります。
署名が一致しても、時刻の窓、重複受信、処理の冪等性は別の条件です。受信前の確認軸を分けて記録します。
signature ≠ fresh ≠ idempotent / verify → reject → record| 軸 | レビュー |
|---|---|
| signature | 署名の一致を確認し、secretそのものは受け渡さない。 |
| timestamp | 許容時間窓を決め、古い通知を受け入れない。 |
| replay | 同じeventやnonceの再送を検出して拒否する。 |
| idempotency | 再試行されても処理結果を二重に作らない。 |
| fail-closed | 確認できない通知は処理せず、運用へ戻す。 |
このページは実Webhookを送受信せず、secretやユーザーpayloadも受け取りません。合成caseだけを扱います。
| case | 結果 |
|---|---|
signature-valid | Signature valid |
timestamp-window | Timestamp window |
replay-detected | Replay detected |
idempotency-key | Idempotency key |
signature-mismatch | Reject mismatch |
local-note | Local handoff |