IOSOR ガイド

署名およびリプレイ窓ゲート

本番ゲート: ウェブホックが金額やステータスの真実になる前に、署名を検証しリプレイ窓を制限します。未署名または古いイベントは拒否されます。

未検証または遅延したwebhookペイロードを許可すると、prepaidアカウントが偽造残高やリプレイ攻撃による二重引き落としの危険にさらされます。資金をledgerで操作する前に、署名を暗号的に検証し、許容範囲外のタイムスタンプを持つペイロードを遮断する厳格なゲートを実装しなければなりません。関連: Webhook署名とリプレイ窓, 着信Webhookの再試行, プロダクトと財務のための共通ステータス言語, 同一台帳のデビット行と配信ステータス。

署名検証は金額のゲートである

金額とステータスの真実は、署名チェックが合格した後にのみ始まります。欠落、不一致、またはスキップされた署名はフェイルクローズ(拒否)となります。元帳行はなく、パイロット用に「とにかく配信された」ということもありません。カタログライブはゲートを免除しません。習慣の深掘り: Webhook署名とリプレイ窓。ソフトなUSD 1,000/monthは「ステージングでの未署名を永遠に受け入れる」ことを本番負債として扱い、USD 20は1つの偽造ボディがデビットを投稿しないことを証明します。

ステータスの真実より前のリプレイ窓

ゲートチェック 合格の意味 失敗の意味
署名あり+有効 認証済みイベント 拒否。金額/ステータス書き込みなし
タイムスタンプが窓内 信頼できる新しさ リプレイ/古いため拒否
未知のイベントID 初回受け取り 2回目のデビットなしでACK
契約イベント一覧内 バイヤーのイベントメニュー 未知のタイプを破棄

少なくとも1回の配信は再試行されます。窓外での遅延した再試行は「配信されたかもしれない」ではありません。窓の拒否を署名失敗とは別にログに記録します。着信リトライの深掘り: 着信Webhookの再試行。

ゲートが拒否したときはフェイルクローズする

拒否されたイベントが成功を捏造することはありません。プロダクトと財務は、上流のヒーローコードではなく、同じ拒否の言葉を共有します: プロダクトと財務のための共通ステータス言語。デビット行は承認されたイベントのみと一致し続けます: 同一台帳のデビット行と配信ステータス。副作用はACKの後にのみ発生し、ゲート前のCRM作業は二重の真実を製造します。

プロダクト、財務、オペレーションが1つの証明を共有する

プロダクト: 正規の署名済み・窓内イベントがステータスを1回更新できるか?財務: 金額に影響するすべてのイベントが同じUTC窓でゲート合格を示すか?オペレーション: Slackの考古学なしで署名失敗と窓拒否を個別にエクスポートできるか?ソフトボリュームの文言は、窓内重複の煙テストが1つの元帳行を示すまでブロックされたままになります。

署名リプレイゲートのバイヤーチェックリスト

  1. 有料トラフィックの前に、すべての本番コンシューマーに署名ミドルウェアがあるか?
  2. リプレイ窓の名前が付けられ、ログに記録され、制限されているか(「数週間」ではない)?
  3. ゲートの拒否が金額や成功ステータスを書き込んでいないか?
  4. 窓内の重複イベントID → 単一の終了状態、2回目のデビットなし?
  5. 署名失敗と窓拒否がオペレーション向けに個別にカウント可能か?
  6. ゲートがオフの間にソフトなUSD 1,000/monthの話がブロックされているか?

「いいえ」があれば、ゲートおよび信頼されるウェブホックの真実は下書きのままになります。

IOSORで始める

本番トラフィックをルーティングする前に、IOSORコンソール上のすべてのインバウンドWebhookで署名検証ミドルウェアを有効にしてください。リプレイウィンドウゲートに厳格なタイムスタンプ境界を設定し、期限切れや未認証のペイロードを自動的に拒否します。ゲートでの拒否が即座にフェイルクローズ処理を引き起こし、未検証のWebhookが決して財務台帳に到達しないことを確認してください。

IOSORの要点

このガイドでは、財務およびステータスの正確性を担保する必須のゲートとして、署名検証と時間制限付きリプレイウィンドウが機能することを解説しました。無効な署名や古いタイムスタンプに対してフェイルクローズを行うことで、重複した状態処理を防ぎ、プロダクト、財務、オペレーションの間で単一の信頼できる情報源を維持します。

本番稼働の前に、すべてのアクティブなWebhookコンシューマーで署名検証と制限されたリプレイウィンドウを必ず強制してください。パイロットトラフィックのために署名ゲートをバイパスしたり、重複したイベントIDを無視したり、拒否されたイン受信ペイロードに対して成功状態を独自に作成したりしないでください。

このガイドは役に立ちましたか?

関連ガイド