使用 Didit 为 FastAPI 实现实时身份风险评分中间件 (ZH)
利用 Didit 的 Webhook 在您的 FastAPI 应用程序中实施强大、实时的身份风险评分。本指南涵盖了安全 Webhook 处理、签名验证的设置,以及将风险信号集成到您的应用中。.

实时风险评分至关重要现代应用程序需要即时身份风险评估,以有效打击欺诈并确保合规性。
安全 Webhook 处理至关重要对传入的 Webhook 实施强大的签名验证和时间戳检查,可防止篡改和重放攻击,这对于维护数据完整性至关重要。
FastAPI 中间件简化集成利用 FastAPI 的中间件功能,可以集中高效地处理异步 Webhook 事件,无缝集成到您的应用程序流程中。
Didit 赋能智能身份编排Didit 提供 AI 原生的身份验证和 Webhook 基础设施,提供实时通知和全面的风险信号,为您的应用程序安全决策提供信息。
在当今的数字环境中,身份验证的速度和准确性直接影响应用程序的安全态势和用户体验。随着业务的扩展,实时风险评分的需求变得至关重要,它允许立即采取行动打击欺诈活动并确保符合法规标准。将 Didit 等先进的身份验证平台与您的后端集成,特别是使用 FastAPI 这样的现代框架,可以显著增强您的防御能力。
这篇博文将指导您构建一个强大的 FastAPI 中间件,用于处理 Didit 的 Webhook,以实现实时身份风险评分。我们将涵盖安全的 Webhook 接收、签名验证以及如何将这些关键风险信号集成到您的应用程序逻辑中。
Webhooks 对于实时身份信号的强大作用
Webhooks 是现代异步通信的基石,它使得服务能够在特定事件发生时向其他应用程序发送实时通知。对于身份验证而言,这意味着一旦用户完成验证步骤或风险评估最终确定,Didit 就可以立即通知您的应用程序。这种实时反馈对于动态风险评分至关重要,它允许您:
- 即时更新用户资料: 根据身份验证或 AML 筛选的结果,将用户标记为已验证或标记为待审核。
- 触发条件工作流: 如果用户未能通过活体检测或在 AML 筛选期间被标记,您可以立即启动更深入的审核流程或阻止访问。
- 增强欺诈检测: 将 Didit 的风险信号(例如 IP 分析或电话验证结果)与您的内部欺诈模型相结合,以进行更全面的评估。
Didit 的 Webhooks 提供详细的 JSON 有效负载,其中包含各种验证检查的结果,包括来自身份验证、被动和主动活体检测、1:1 人脸匹配、AML 筛选和监控、地址证明以及电话和电子邮件验证的结果。这些丰富的数据点对于构建每个用户的实时风险档案都具有无价的价值。
使用 FastAPI 中间件保护您的 Webhook 端点
安全接收 Webhooks 是不可协商的。恶意行为者可能会尝试发送虚假事件或重放旧事件,导致数据泄露或错误操作。Didit 的 Webhooks 包含 HMAC-SHA256 签名和时间戳,这对于验证每个传入请求的真实性和完整性至关重要。FastAPI 中间件是集中实现这些安全检查的绝佳位置。
以下是您构建 FastAPI 中间件的概念性大纲:
import hmac
import hashlib
import time
from fastapi import FastAPI, Request, HTTPException
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.responses import JSONResponse
WEBHOOK_SECRET = "YOUR_DIDIT_WEBHOOK_SECRET" # Get this from Didit Console -> API Keys
class DiditWebhookSignatureMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
if request.url.path == "/api/webhooks/didit":
signature = request.headers.get("X-Signature")
timestamp = request.headers.get("X-Timestamp")
if not signature or not timestamp:
raise HTTPException(status_code=401, detail="Missing webhook signature or timestamp")
# 1. Verify Timestamp Freshness (e.g., within 5 minutes)
try:
request_time = int(timestamp)
if abs(time.time() - request_time) > 300: # 300 seconds = 5 minutes
raise HTTPException(status_code=401, detail="Webhook timestamp too old or too new")
except ValueError:
raise HTTPException(status_code=401, detail="Invalid timestamp format")
# 2. Reconstruct the signed payload
body = await request.body()
signed_payload = f"{timestamp}.{body.decode('utf-8')}"
# 3. Calculate expected signature
expected_signature = hmac.new(
WEBHOOK_SECRET.encode('utf-8'),
signed_payload.encode('utf-8'),
hashlib.sha256
).hexdigest()
# 4. Compare signatures
if not hmac.compare_digest(expected_signature, signature):
raise HTTPException(status_code=401, detail="Invalid webhook signature")
# If signature and timestamp are valid, proceed
request.state.didit_webhook_body = body.decode('utf-8') # Store for later processing
return await call_next(request)
app = FastAPI()
app.add_middleware(DiditWebhookSignatureMiddleware)
@app.post("/api/webhooks/didit")
async def handle_didit_webhook(request: Request):
# Webhook body is already verified and available in request.state
payload = json.loads(request.state.didit_webhook_body)
# Process payload for risk scoring, update user status, etc.
print("Received valid Didit webhook:", payload)
return JSONResponse({"status": "success"})
此中间件确保您的 /api/webhooks/didit 端点接收到的每个 Didit Webhook 请求在您的应用程序逻辑处理有效负载之前都经过身份验证和最新性检查。这是抵御各种攻击向量的关键防御层。
将实时风险信号集成到您的应用程序逻辑中
一旦 Webhook 有效负载经过验证和解析,您的应用程序就可以提取必要的信息来更新用户风险评分或触发特定操作。Didit 的 API 完整流程文档概述了这些有效负载的综合结构,包括 session_id、vendor_data(您的内部用户 ID)以及每个验证步骤的详细结果。
例如,如果用户进行身份验证和活体检测,Webhook 有效负载将包含这些检查的状态。您可能会根据以下因素定义风险评分:
- 成功的身份验证: 降低风险评分。
- 失败的活体检测: 显著提高风险评分,可能触发账户冻结。
- AML 筛选命中(PEP/制裁): 高风险,需要立即进行人工审查。
- 检测到一次性电话号码(来自电话验证): 中等风险,可能表明欺诈意图。
您的 Webhook 处理程序的职责是解释这些信号并相应地更新您的内部用户状态或风险档案。这可能涉及更新数据库中的 user_status 字段,添加人工审查标志,甚至与专门的欺诈管理系统集成。
Didit 如何提供帮助
Didit 是一个 AI 原生、开发者优先的身份平台,旨在使实时身份风险评分无缝高效。我们的模块化架构允许您组合验证工作流,精确满足您的需求,从基本的身份验证到高级 AML 筛选以及被动和主动活体检测。我们提供强大的 Webhook 功能,确保您的应用程序接收到关于验证结果的实时、安全通知。
通过 Didit,您将受益于:
- 免费核心 KYC: 免费开始使用基本的身份验证,让您无需前期投资即可构建和测试您的集成。
- AI 原生智能: 利用尖端 AI 进行卓越的欺诈检测、活体检测和文档分析,提供准确的风险信号。
- 开发者优先方法: 简洁的 API、全面的文档和即时沙盒使得与 FastAPI 等框架的集成变得直接而快速。
- 编排工作流: 使用无代码引擎定义复杂的验证流程,让您无需更改代码即可适应不断变化的风险环境。
- 全球覆盖: 支持各种文档类型和区域合规性要求,在全球范围内验证身份。
通过利用 Didit 的电话和电子邮件验证、身份验证以及 AML 筛选和监控产品,结合我们安全的 Webhook 基础设施,您可以在 FastAPI 应用程序中构建一个高度响应和弹性的身份风险评分系统。我们的平台提供您做出明智决策和保护您的业务所需的实时数据。
准备好开始了吗?
准备好亲身体验 Didit 的强大功能了吗?立即获取免费演示。
使用Didit 的免费套餐免费开始验证身份。