AWS 람다로 Didit을 위한 안전한 웹훅 미들웨어 구축 (KO)
AWS 람다를 사용하여 Didit 웹훅을 위한 강력하고 안전한 API 게이트웨이 미들웨어를 구축하는 방법을 알아보세요. 이 가이드는 서명 검증, 타임스탬프 유효성 검사 및 비동기 처리를 다루며, 데이터 무결성을 보장합니다.

안전한 웹훅 수집 HMAC-SHA256 서명 검증 및 타임스탬프 유효성 검사를 구현하는 것은 Didit 웹훅을 변조 및 재전송 공격으로부터 보호하고 데이터 무결성 및 신뢰성을 보장하는 데 중요합니다.
비동기 처리 아키텍처 AWS 람다 및 SQS를 활용하면 웹훅 수집과 처리를 분리하여 확장성, 안정성을 향상시키고 실시간 응답에 영향을 주지 않으면서 복잡한 다운스트림 로직을 허용합니다.
실시간 신원 업데이트 Didit의 웹훅은 신원 확인 결과에 대한 즉각적인 알림을 제공하여 애플리케이션 내에서 사용자 상태, 사기 경고 또는 규정 준수 기록을 즉시 업데이트할 수 있도록 합니다.
Didit의 개발자 우선 접근 방식 Didit은 모듈식 아키텍처와 깔끔한 API를 제공하여 실시간 신원 확인 결과를 시스템에 쉽게 통합할 수 있도록 하며, 무료 핵심 KYC 제공 및 설정 수수료 없음으로 더욱 강화됩니다.
안전한 웹훅 처리의 중요성
오늘날 상호 연결된 디지털 환경에서 실시간 데이터 교환은 특히 신원 확인과 같은 중요한 기능에 있어 가장 중요합니다. 웹훅은 이러한 실시간 알림의 중추 역할을 하며, Didit과 같은 서비스가 신원 확인 결과, AML 심사 결과 또는 생체 인식 상태에 대해 애플리케이션에 즉시 알릴 수 있도록 합니다. 그러나 단순히 데이터를 수신하는 것만으로는 충분하지 않습니다. 데이터의 진위, 무결성 및 적시 처리를 보장하는 것이 중요합니다. 안전하지 않은 웹훅 엔드포인트는 데이터 변조, 재전송 공격 또는 서비스 거부 시도에 취약한 심각한 취약점이 될 수 있습니다. 이것이 바로 잘 설계된 API 게이트웨이 미들웨어, 특히 Didit의 웹훅에 있어 필수적인 이유입니다.
Didit이 ID 확인, 수동 및 능동 생체 인식 확인, 1:1 얼굴 매칭 또는 AML 심사를 완료하면 구성된 엔드포인트로 웹훅을 보냅니다. 이 알림에는 확인 상태에 대한 중요한 정보가 포함되어 있습니다. 적절한 보안 조치가 없으면 악의적인 행위자가 이러한 알림을 위조하여 잘못된 사용자 온보딩 결정이나 사기 행위로 이어질 수 있습니다. 예를 들어, 위조된 '인증됨' 상태는 악의적인 행위자에게 접근 권한을 부여할 수 있고, 위조된 '실패' 상태는 합법적인 사용자가 차단될 수 있습니다. 따라서 안전하고 견고한 웹훅 수신 메커니즘을 구축하는 것은 단순히 좋은 관행이 아니라 플랫폼의 보안 및 규정 준수를 유지하는 데 필수적입니다.
AWS 람다 및 API 게이트웨이로 견고한 미들웨어 구축
Didit의 웹훅을 효과적이고 안전하게 처리하기 위해 AWS 람다와 API 게이트웨이의 기능을 활용하여 서버리스 미들웨어를 만들 수 있습니다. 이 아키텍처는 확장성, 비용 효율성 및 고가용성을 제공하며, 이벤트 기반 데이터 처리에 완벽하게 적합합니다. 핵심 아이디어는 API 게이트웨이가 진입점 역할을 하여 초기 유효성 검사 및 안전한 처리를 담당하는 람다 함수로 요청을 전달하는 것입니다.
1단계: API 게이트웨이를 진입점으로 설정
AWS API 게이트웨이는 Didit이 웹훅을 보낼 공개 엔드포인트(예: /api/webhooks/didit)를 노출합니다. 이 엔드포인트를 POST 요청을 수락하고 람다 함수와 통합하도록 구성하는 것이 중요합니다. 기존 설정과 달리 API 게이트웨이는 서명 확인에 Didit이 보낸 정확한 원시 페이로드가 필요하므로 즉각적인 JSON 구문 분석 없이 원시 요청 본문을 람다로 직접 전달하도록 구성해야 합니다.
2단계: AWS 람다에서 안전한 유효성 검사 구현
람다 함수는 미들웨어의 핵심입니다. 웹훅을 수신하면 데이터를 처리하기 전에 몇 가지 중요한 유효성 검사 단계를 수행해야 합니다.
- 원시 요청 본문 읽기: 람다 함수는 원시 요청 본문에 액세스해야 합니다. 이는 HMAC-SHA256 서명 확인에 필수적입니다.
- HMAC-SHA256 서명 확인: Didit의 웹훅에는 HMAC-SHA256 서명이 포함된
X-Signature헤더가 포함되어 있습니다. 람다 함수는 웹훅 비밀(애플리케이션과 Didit 간에 공유됨)을 사용하여 원시 요청 본문에서 자체 서명을 계산합니다. 계산된 서명이X-Signature헤더와 일치하지 않으면 웹훅이 유효하지 않으므로 즉시 거부해야 합니다. 이는 데이터 변조로부터 보호합니다. - 타임스탬프 유효성 검사: Didit에는
X-Timestamp헤더도 포함되어 있습니다. 람다 함수는 이 타임스탬프가 최신 상태인지, 일반적으로 현재 시간으로부터 5분 이내인지 확인해야 합니다. 이는 공격자가 오래된 합법적인 웹훅 이벤트를 재전송할 수 있는 재전송 공격을 방지합니다. - JSON 본문 구문 분석: 서명 및 타임스탬프 확인이 성공한 후에만 원시 본문을 JSON 개체로 구문 분석해야 합니다.
다음은 람다 내에서 서명 확인을 위한 개념적인 Python 스니펫입니다.
import hmac
import hashlib
import time
import json
def verify_webhook_signature(body, headers, secret):
signature_header = headers.get('X-Signature')
timestamp_header = headers.get('X-Timestamp')
if not signature_header or not timestamp_header:
return False, "Missing signature or timestamp header"
# Check timestamp for freshness (e.g., within 5 minutes)
current_time = int(time.time())
event_timestamp = int(timestamp_header)
if abs(current_time - event_timestamp) > 300: # 300 seconds = 5 minutes
return False, "Webhook timestamp too old or too far in future"
# Reconstruct the signed payload
signed_payload = f"v1:{timestamp_header}:{body}"
# Compute HMAC signature
expected_signature = hmac.new(
secret.encode('utf-8'),
signed_payload.encode('utf-8'),
hashlib.sha256
).hexdigest()
# Compare signatures in a secure way (constant time comparison)
if hmac.compare_digest(signature_header, expected_signature):
return True, "Signature valid"
else:
return False, "Signature mismatch"
# In your Lambda handler:
def lambda_handler(event, context):
body = event['body'] # Raw request body
headers = event['headers']
webhook_secret = "YOUR_DIDIT_WEBHOOK_SECRET" # Store securely, e.g., in AWS Secrets Manager
is_valid, message = verify_webhook_signature(body, headers, webhook_secret)
if not is_valid:
print(f"Webhook validation failed: {message}")
return {
'statusCode': 403,
'body': json.dumps({'message': 'Unauthorized'})
}
# If valid, parse JSON and proceed with processing
payload = json.loads(body)
# ... process payload ...
return {
'statusCode': 200,
'body': json.dumps({'message': 'Webhook received and processed'})
}
확장성 및 안정성을 위한 비동기 처리
웹훅을 검증한 후에는 수집 프로세스를 실제 비즈니스 로직과 분리하는 것이 일반적으로 가장 좋은 방법입니다. 이는 유효성 검사 후 람다 함수가 복잡한 데이터베이스 작업이나 외부 API 호출을 직접 실행해서는 안 된다는 것을 의미합니다. 대신, 유효성 검사를 거친 페이로드를 AWS SQS(Simple Queue Service)와 같은 비동기 처리 큐로 푸시해야 합니다.
이 아키텍처는 다음과 같은 여러 가지 장점을 제공합니다.
- 확장성: API 게이트웨이 및 초기 람다는 다운스트림 처리로 인해 병목 현상이 발생하지 않고 많은 양의 수신 웹훅을 처리할 수 있습니다.
- 안정성: 다운스트림 시스템을 일시적으로 사용할 수 없는 경우에도 메시지가 큐에 남아 데이터 손실을 방지합니다.
- 결합 해제: 다른 람다 함수 또는 서비스가 SQS 큐에서 메시지를 처리할 수 있어 비즈니스 로직(예: 사용자 기록 업데이트, AML 경고 트리거 또는 확인 결과 로깅)의 모듈식 및 독립적인 개발 및 배포가 가능합니다.
- 빠른 응답: 초기 웹훅 엔드포인트는 빠르게 응답하여(예: 200 OK) Didit이 웹훅을 불필요하게 재시도하는 것을 방지할 수 있습니다.
이는 ID 확인, ePassport용 NFC 확인 또는 규정 준수를 위한 연령 추정을 수행하든 관계없이 결과가 효율적이고 안정적으로 처리되도록 보장합니다.
Didit이 도움이 되는 방법
Didit은 모듈성 및 통합 용이성을 위해 설계된 AI 기반 개발자 우선 신원 플랫폼입니다. 당사의 웹훅은 이러한 철학의 대표적인 예이며, 신원 확인 워크플로 상태에 대한 실시간 보안 알림을 제공합니다. Didit은 깔끔한 API와 포괄적인 문서를 제공함으로써 위에 설명된 AWS 람다 및 API 게이트웨이 솔루션과 같은 사용자 지정 미들웨어에 이러한 웹훅을 설정하고 통합하는 것을 간단하게 만듭니다.
Didit의 플랫폼은 ID 확인(OCR, MRZ, 바코드), 수동 및 능동 생체 인식, 1:1 얼굴 매칭 및 얼굴 검색, AML 심사 및 모니터링, 주소 증명, 연령 추정, 전화 및 이메일 확인, NFC 확인을 포함한 광범위한 신원 확인 기본 요소를 지원합니다. 이러한 검사 결과는 당사의 보안 웹훅을 통해 전달될 수 있으므로 고도로 반응적이고 자동화된 시스템을 구축할 수 있습니다. 또한 Didit은 무료 핵심 KYC, 모듈식 아키텍처 및 설정 수수료를 제공하지 않아 모든 규모의 기업이 신뢰를 자동화하고 위험을 조율하기 위한 접근 가능하고 강력한 선택이 됩니다.
시작할 준비가 되셨습니까?
Didit이 작동하는 것을 볼 준비가 되셨습니까? 지금 무료 데모를 받으세요.
Didit의 무료 등급으로 무료로 신원 확인을 시작하세요.