아우라베이스 로고
아우라베이스문서
문서›가이드›웹훅 및 HMAC

발신 웹후크 및 HMAC 서명

HMAC-SHA256 암호화 서명을 사용하여 자체 서버에서 Aurabase 프로젝트의 실시간 이벤트를 안전하게 수신하세요.

8분 읽기·레벨 중급·2026. 8. 19.에 개정됨
이 영어 텍스트는 프랑스어 원본에서 자동으로 생성되었으며 아직 검토되지 않았습니다.
이 페이지는 자동으로 번역되었습니다. 영어 버전은 권위가 있습니다.
#
작동

웹훅 아키텍처

Aurabase 발신 웹후크는 콜백 URL에 시스템 이벤트를 방송합니다(예: 신규 사용자 등록, 성공적인 결제, 테이블 행 업데이트).

최소 1회 배송 보장

전송된 각 웹후크에는 고유한 이벤트 식별자 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(Dead-Letter Queue)에 배치됩니다.

마지막 업데이트 · 2026. 8. 19.