オーラベースのロゴ
オーラベースドキュメント
ドキュメント›ガイド›Webhook と HMAC

送信 Webhook と HMAC 署名

HMAC-SHA256 暗号署名を使用して、独自のサーバー上の Aurabase プロジェクトからリアルタイム イベントを安全に受信します。

8 分 読み取り·レベル 中間·2026/08/19 に改訂
この英語のテキストはフランス語のオリジナルから自動的に生成されたもので、まだレビューされていません。
このページは自動翻訳されました。英語版が正式です。
#
操作

Webhook アーキテクチャ

Aurabase の送信 Webhook は、システムイベントをコールバック URL にブロードキャストします (新規ユーザー登録、支払いの成功、テーブル行の更新など)。

少なくとも 1 回の配信保証

送信される各 Webhook には一意のイベント識別子 event_id が含まれており、サーバー上で冪等処理を実装できます。

#
セキュリティ

X-Aurabase-Signature ヘッダーの構造

Aurabase によって発行される各 HTTP POST リクエストには、次のセキュリティヘッダーが含まれます。

http-headerstext
POST /webhook HTTP/1.1
Host: api.votre-domaine.com
Content-Type: application/json
X-Aurabase-Event-Id: evt_01J8Y6Q9K3M7Z...
X-Aurabase-Signature: t=1724060000,v1=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
#
検証

HMAC-SHA256 署名を検証する

verify-webhook.tstypescript
import crypto from 'node:crypto'
export function verifyAurabaseWebhook(
  rawBody: string, signatureHeader: string, secret: string)
  const parts = Object.fromEntries(
    signatureHeader.split(',').map(p => p.split('=')),
  )
  const { t: timestamp, v1: signature } = parts

  // 1. リプレイ攻撃に対する保護 (最大 5 分)
  if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
    return false
  }

  // 2. timestamp.rawBody の HMAC-SHA256 の計算
  const expected = crypto
    .createHmac('sha256', secret)
    .update(timestamp + '.' + rawBody)
    .digest('hex')

  // 3. 一定時間での確実な比較
  return crypto.timingSafeEqual(
    Buffer.from(signature), Buffer.from(expected)
  )
}
#
回復力

障害管理とデッドレターキュー

サーバーが HTTP エラーコード (4xx、5xx) で応答するか、タイムアウト (時間制限 10 秒) が発生した場合、Aurabase は指数バックオフに従って自動的に送信を再試行します。

  • 試み 1: 即時
  • 試行 2: 15 秒後
  • 試行 3: 1 分後
  • 試み 4: 5 分後
  • 試み 5: 30 分後

5 回連続して失敗すると、イベントは検査と手動再生のために Studio の デッドレター キュー (DLQ) に配置されます。