Creació d'un Middleware segur per als Webhooks de Didit amb AWS Lambda (CA)
Aprèn a construir un middleware robust i segur amb API Gateway per als webhooks de Didit utilitzant AWS Lambda. Aquesta guia cobreix la verificació de signatures, la validació de marques de temps i el processament asíncron.

Ingesta segura de Webhooks Implementar la verificació de signatura HMAC-SHA256 i la validació de la marca de temps és crucial per protegir els webhooks de Didit contra manipulacions i atacs de repetició, garantint la integritat i autenticitat de les dades.
Arquitectura de Processament Asíncron Aprofitar AWS Lambda i SQS desvincula la ingesta de webhooks del processament, millorant l'escalabilitat, la fiabilitat i permetent una lògica posterior complexa sense afectar les respostes en temps real.
Actualitzacions d'Identitat en Temps Real Els webhooks de Didit proporcionen notificacions instantànies sobre els resultats de la verificació d'identitat, permetent actualitzacions immediates dels estats dels usuaris, alertes de frau o registres de compliment dins de la vostra aplicació.
L'enfocament de Didit centrat en el desenvolupador Didit ofereix una arquitectura modular i API netes, facilitant la integració dels resultats de verificació d'identitat en temps real als vostres sistemes, millorat encara més per una oferta KYC bàsica gratuïta i sense tarifes de configuració.
La importància d'una gestió segura dels Webhooks
En el panorama digital interconnectat actual, l'intercanvi de dades en temps real és primordial, especialment per a funcions crítiques com la verificació d'identitat. Els webhooks serveixen com a base per a aquestes notificacions en temps real, permetent que serveis com Didit informin la vostra aplicació instantàniament sobre el resultat d'una comprovació d'identitat, un resultat de cribratge AML o un estat de detecció de vida. No obstant això, simplement rebre dades no és suficient; garantir la seva autenticitat, integritat i processament oportú és vital. Un punt final de webhook insegur pot ser una vulnerabilitat significativa, susceptible a la manipulació de dades, atacs de repetició o intents de denegació de servei. Aquí és on un middleware d'API Gateway ben dissenyat, particularment per als webhooks de Didit, esdevé indispensable.
Quan Didit completa una verificació d'identitat, una comprovació de vida passiva i activa, una coincidència facial 1:1 o un cribratge AML, envia un webhook al vostre punt final configurat. Aquesta notificació conté informació crucial sobre l'estat de la verificació. Sense mesures de seguretat adequades, actors maliciosos podrien falsificar aquestes notificacions, la qual cosa podria conduir a decisions incorrectes d'incorporació d'usuaris o a activitats fraudulentes. Per exemple, un estat de 'verificat' falsificat podria concedir accés a un actor maliciós, mentre que un estat de 'fallit' falsificat podria bloquejar usuaris legítims. Per tant, establir un mecanisme de recepció de webhook segur i robust no és només una bona pràctica; és una necessitat per mantenir la seguretat i el compliment de la vostra plataforma.
Construint un Middleware Robust amb AWS Lambda i API Gateway
Per gestionar els webhooks de Didit de manera efectiva i segura, podem aprofitar la potència d'AWS Lambda i API Gateway per crear un middleware sense servidor. Aquesta arquitectura ofereix escalabilitat, eficiència de costos i alta disponibilitat, perfectament adequada per al processament de dades impulsat per esdeveniments. La idea principal és que API Gateway actuï com a punt d'entrada, reenviant les sol·licituds a una funció Lambda responsable de la validació inicial i el processament segur.
Pas 1: Configuració d'API Gateway com a punt d'entrada
El vostre AWS API Gateway exposarà un punt final públic (per exemple, /api/webhooks/didit) al qual Didit enviarà els seus webhooks. És crucial configurar aquest punt final per acceptar sol·licituds POST i integrar-lo amb la vostra funció Lambda. A diferència de les configuracions tradicionals, API Gateway s'ha de configurar per passar el cos de la sol·licitud en brut directament a Lambda sense una anàlisi JSON immediata. Això es deu al fet que la verificació de la signatura requereix la càrrega útil en brut exacta enviada per Didit.
Pas 2: Implementació de la validació segura a AWS Lambda
La funció Lambda és el cor del vostre middleware. En rebre un webhook, ha de realitzar diversos passos de validació crítics abans de processar les dades:
- Llegir el cos de la sol·licitud en brut: La funció Lambda ha d'accedir al cos de la sol·licitud en brut. Això és essencial per a la verificació de la signatura HMAC-SHA256.
- Verificar la signatura HMAC-SHA256: Els webhooks de Didit inclouen una capçalera
X-Signatureque conté una signatura HMAC-SHA256. La vostra funció Lambda utilitzarà el vostre secret de webhook (compartit entre la vostra aplicació i Didit) per calcular la seva pròpia signatura a partir del cos de la sol·licitud en brut. Si la signatura calculada no coincideix amb la capçaleraX-Signature, el webhook no és vàlid i s'ha de rebutjar immediatament. Això protegeix contra la manipulació de dades. - Validar la marca de temps: Didit també inclou una capçalera
X-Timestamp. La vostra funció Lambda hauria de verificar que aquesta marca de temps és recent, normalment dins d'una finestra de 5 minuts respecte a l'hora actual. Això evita els atacs de repetició, on un atacant podria reenviar un esdeveniment de webhook antic i legítim. - Analitzar el cos JSON: Només després d'una verificació de signatura i marca de temps exitosa s'ha de convertir el cos en brut en un objecte JSON.
Aquí teniu un fragment de Python conceptual per a la verificació de la signatura dins de la vostra Lambda:
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'})
}
Processament Asíncron per a Escalabilitat i Fiabilitat
Després de validar el webhook, generalment és una bona pràctica desacoblar el procés d'ingesta de la lògica de negoci real. Això significa que la vostra funció Lambda, després de la validació, no hauria d'executar directament operacions de bases de dades complexes o trucades a API externes. En canvi, només hauria d'enviar la càrrega útil validada a una cua de processament asíncron, com ara AWS SQS (Simple Queue Service).
Aquesta arquitectura ofereix diversos avantatges:
- Escalabilitat: La vostra API Gateway i la Lambda inicial poden gestionar un gran volum de webhooks entrants sense quedar-se embotellats pel processament posterior.
- Fiabilitat: Si els vostres sistemes posteriors no estan disponibles temporalment, els missatges romanen a la cua, evitant la pèrdua de dades.
- Desacoblament: Diferents funcions Lambda o serveis poden processar missatges de la cua SQS, permetent un desenvolupament i desplegament modular i independent de la vostra lògica de negoci (per exemple, actualitzar registres d'usuaris, activar alertes AML o registrar resultats de verificació).
- Respostes ràpides: El punt final de webhook inicial pot respondre ràpidament (per exemple, amb un 200 OK), evitant que Didit torni a intentar el webhook innecessàriament.
Això garanteix que, tant si realitzeu verificació d'identitat, utilitzeu la verificació NFC per a passaports electrònics o aprofiteu l'estimació d'edat per al compliment, els resultats es processin de manera eficient i fiable.
Com ajuda Didit
Didit és una plataforma d'identitat nativa d'IA, centrada en el desenvolupador, dissenyada per a la modularitat i la facilitat d'integració. Els nostres webhooks són un exemple primordial d'aquesta filosofia, proporcionant notificacions segures i en temps real sobre l'estat dels vostres fluxos de treball de verificació d'identitat. En oferir una API neta i una documentació completa, Didit fa que sigui senzill configurar i integrar aquests webhooks al vostre middleware personalitzat, com la solució AWS Lambda i API Gateway descrita anteriorment.
La plataforma de Didit admet una àmplia gamma de primitives de verificació d'identitat, incloent verificació d'identificació (OCR, MRZ, codis de barres), vida passiva i activa, coincidència facial 1:1 i cerca facial, cribratge i monitorització AML, prova d'adreça, estimació d'edat, verificació de telèfon i correu electrònic, i verificació NFC. Els resultats de qualsevol d'aquestes comprovacions es poden lliurar mitjançant els nostres webhooks segurs, cosa que us permetrà construir sistemes altament responsius i automatitzats. A més, Didit ofereix KYC bàsic gratuït, una arquitectura modular i sense tarifes de configuració, cosa que el converteix en una opció accessible i potent per a empreses de totes les mides que busquen automatitzar la confiança i orquestrar el risc.
A punt per començar?
A punt per veure Didit en acció? Obteniu una demostració gratuïta avui.
Comenceu a verificar identitats gratuïtament amb el nivell gratuït de Didit.