IOSOR 가이드

웹훅 서명과 리플레이 창: 멱등성으로 02:00을 지루하게

서명을 검증하고 리플레이 창을 묶고 수신 웹훅을 멱등하게 하라. 미서명 콜백은 받지 말고, retry 로 prepaid 를 두 번 차변하지 마라.

미서명 콜백은 이벤트가 아니다. 우연히 페이로드처럼 보이는 미인증 HTTP 다. 먼저 받고 나중에 검증하는 팀은 02:00 에 대가를 낸다. 재연된 DLR, 중복 STOP, 재무가 되돌릴 수 없는 두 번째 지갑 차변. Prepaid 는 실패를 돈으로 보이게 한다. 지루한 습관은 매 요청 서명 검증, 유한 리플레이 창, 원장 줄 옆에서 재무가 읽는 멱등 키다.

IOSOR 는 감사 가능한 B2B 연동을 기대한다. 서명된 웹훅, 돌릴 수 있는 비밀, 남의 브랜드를 쏟지 않는 client-safe 오류. 월 USD 1,000+ 근처에서 상관 ID 와 리플레이 증거가 상업 리뷰 재료가 된다. 공학 위생만이 아니다. 런칭 시 웹훅과 키 와 런칭을 버티는 웹훅 습관 를 짝지워라.

미서명 콜백은 이벤트가 아니다

업무 필드를 파싱하기 전에 서명을 검증하라. 없거나 낡거나 어긋난 서명은 client-safe 오류로 거절하라. «파일럿이니까 처리» 하지 마라. 검증을 건너뛰는 스테이징 소비자는 프로덕션도 건너뛰도록 훈련한다. 메시징 카탈로그가 live 여도 웹훅 URL 이 공공 쓰레기장이 아니다. 누가 본문에 서명했는지 증명하지 못하면 이벤트가 아니라 위조 요청이다.

리플레이 창과 02:00이 일어나는 이유

적어도 한 번 전달은 timeout, 5xx, 모호한 네트워크 손실에서 재시도한다. 02:00 의 늦은 retry 는 정상이다. 창은 서명된 페이로드가 얼마나 오래 받아들여지는지를 묶는다. 너무 넓으면 공격자가 오래된 STOP 을 재연하고, 너무 좁으면 정당한 retry 가 위조처럼 보인다. 창 거부와 서명 실패를 나눠 로그하라. 인바운드 웹훅 재시도 를 보라. 빨리 응답하고, 먼저 persist 하고, 비동기로 처리하라. ACK 전에 CRM 하는 핸들러는 중복을 제조한다.

재무가 읽을 수 있는 멱등성

같은 이벤트 ID 는 같은 끝 상태를 내야 한다. 플랫폼 이벤트/메시지 ID 를 추출하라. 타임스탬프와 본문으로 키를 만들지 마라. 알려진 ID 는 다시 차변하지 않고 성공을 돌려라. 송신에도 같은 규율이 필요하다 — 멱등, 재시도와 자금. 재무는 각 prepaid 줄을 상태 사건에 대해 설명해야 한다. timeout 이 클라이언트 retry 폭풍을 일으키면 원장이 먼저 손해를 보여 준다. 카탈로그 in setup 은 «Live 까지 멱등을 건너뛴다» 변명이 아니다.

이중 수락 혼돈 없는 서명 순환

옛 서명과 새 서명이 영원히 둘 다 받아들여지는 창 없이 비밀을 돌려라. 겹침을 계획한 뒤 잘라라. 프로덕션 비밀을 티켓에 붙이지 마라. 샌드박스와 프로덕션 소비자를 나눠라. 실패한 소비자를 두 번째 차변 없이 다시 몰 수 있도록 데드레터와 리플레이 도구를 둬라. 상관 ID 를 송신에서 원장 줄로 옮겨라. 02:00 은 runbook 이지 고고학이 아니다.

위험 신호

  • 핸들러가 미서명 본문을 «당분간» 받는다
  • 리플레이 창이 없거나 주 단위다
  • 시각 비교 없이 상태 덮어쓰기
  • ACK 전 CRM/메일 부작용
  • 프로덕션 비밀이 채팅에 나온다
  • 지난달 중복 이벤트 ID 를 아무도 보지 않는다
  • 고객 오류가 날것의 상류 코드를 쏟는다

IOSOR로 시작하기

IOSOR 콘솔을 열고 인바운드 전송 확인 및 이벤트 콜백을 위한 활성 웹훅 엔드포인트 설정을 점검하세요. 5분 이내의 엄격한 서명 검증 재전송 허용 구간을 설정하고 핸들러를 플랫폼 이벤트 ID에 엄격히 바인딩하세요. 스테이징 환경에서 재전송된 페이로드를 대상으로 엔드포인트를 테스트하여 중복 요청 시 중복 비즈니스 로직을 실행하지 않고 200 OK를 반환하는지 확인하세요.

IOSOR 핵심 요약

검증되지 않은 웹훅 핸들러와 누락된 재전송 허용 구간은 일상적인 네트워크 재시도를 보안 취약점과 중복 상태 변경으로 바꿉니다. 타임스탬프를 통한 서명 유효성 제한과 엄격한 멱등성 강화를 통해 새벽 2시의 자동화된 전송 시도가 완전히 예측 가능하도록 유지하세요.

페이로드 파싱 전에 서명을 반드시 검증하고, 이미 처리된 이벤트 ID에는 즉시 성공을 반환하세요. 로컬 테스트를 위해 서명 검증을 비활성화하거나, 변동되는 본문 필드로 키 서명을 임의로 생성하거나, 수신을 확인하기 전에 외부 CRM 작업을 트리거하지 마세요.

이 가이드가 도움이 되었나요?

관련 가이드