跳到主要内容
Didit 融资 750 万美元,打造身份与欺诈基础设施
Didit
返回博客
博客 · 2026年3月6日

使用AWS Lambda和API Gateway构建Didit Webhook监听器 (ZH)

学习如何使用TypeScript、AWS Lambda和API Gateway(Serverless Framework)创建强大、可扩展的Didit Webhook监听器。本指南涵盖了设置、签名验证和安全事件处理,以实现实时身份验证。.

作者:Didit更新于
building-didit-webhook-listeners-with-aws-lambda-api-gateway.png

安全的Webhook集成实现强大的Webhook签名验证,使用Didit的共享密钥对于确保来自Didit平台的传入数据的完整性和真实性至关重要,可防止欺骗和篡改。

可扩展的无服务器架构利用AWS Lambda和API Gateway与Serverless Framework相结合,为处理Didit Webhook事件提供了高度可扩展且经济高效的解决方案,可根据不同负载自动调整,无需人工干预。

实时身份工作流实时处理Didit Webhook可以即时响应身份验证结果,促进动态用户入职、欺诈检测和合规性操作,从而提高运营效率。

Didit的开发者优先方法Didit通过清晰的API文档、简便的密钥轮换和模块化架构简化了Webhook管理,使开发人员能够快速构建和部署自定义事件驱动工作流,提供免费的核心KYC且无设置费用。

Webhooks在身份验证中的强大作用

在身份验证领域,实时反馈至关重要。无论是新用户入职、AML筛选还是年龄验证,在验证会话发生时了解其结果,都可以实现动态决策和无缝的用户体验。这就是Webhooks的用武之地。Didit不会不断轮询API以获取状态更新,而是在发生重要事件(例如验证会话完成或状态更改)时,向您指定的端点发送自动通知。这种基于推送的模型效率更高,减少了API调用开销,并确保您的系统始终与最新的身份验证结果保持同步。

集成Didit强大的身份验证功能通常涉及设置可靠的Webhook监听器。该监听器充当您应用程序的眼睛和耳朵,接收有关ID验证、活体检测或AML筛选结果状态的关键更新。一个良好实现的Webhook系统是现代事件驱动架构的基石,提供了快速响应验证结果并保持流畅用户旅程所需的敏捷性。

使用AWS Lambda和API Gateway设置无服务器Webhook监听器

构建可扩展且具有弹性的Webhook监听器可能很复杂,但借助AWS Lambda和API Gateway,并结合Serverless Framework,它变得异常简单。这种无服务器方法意味着您无需管理任何服务器;AWS处理所有基础设施,根据需求自动扩展您的监听器。对于我们的Didit Webhook监听器,我们将使用TypeScript以提高类型安全性和开发人员生产力。

先决条件:

  • 一个AWS账户
  • 已安装Node.js和npm
  • 已安装Serverless Framework(npm install -g serverless
  • 一个具有API密钥和Webhook密钥的Didit账户(来自Didit控制台 -> 设置 -> API密钥)

项目设置:

首先,创建一个新的Serverless项目:

serverless create --template aws-nodejs-typescript --path didit-webhook-listener
cd didit-webhook-listener
npm install

现在,让我们配置serverless.yml来定义我们的Lambda函数和API Gateway端点:

service: didit-webhook-listener

provider:
  name: aws
  runtime: nodejs18.x
  stage: dev
  region: us-east-1
  environment:
    DIDIT_WEBHOOK_SECRET: ${ssm:/didit/webhook/secret}

functions:
  handleDiditWebhook:
    handler: src/handler.handleDiditWebhook
    events:
      - http:
          path: webhook/didit
          method: post
          cors: true

plugins:
  - serverless-offline
  - serverless-dotenv-plugin
  - serverless-ssm-fetch

请注意,我们从AWS SSM参数存储中获取DIDIT_WEBHOOK_SECRET,这是管理秘密的最佳实践。您需要将您的Didit Webhook密钥存储在那里。Didit允许您通过API或Didit控制台轻松轮换您的密钥,确保良好的安全卫生。

在TypeScript中实现安全的Webhook处理

任何Webhook监听器最关键的方面是安全性。您必须验证传入请求确实来自Didit且未被篡改。Didit为此目的提供了一个共享密钥,您可以使用它来验证Webhook的x-didit-signature头中包含的HMAC签名。

创建src/handler.ts

import { APIGatewayProxyHandler } from 'aws-lambda';
import * as crypto from 'crypto';

const DIDIT_WEBHOOK_SECRET = process.env.DIDIT_WEBHOOK_SECRET || '';

export const handleDiditWebhook: APIGatewayProxyHandler = async (event) => {
  if (!event.body) {
    return { statusCode: 400, body: 'No body received' };
  }

  const signature = event.headers['x-didit-signature'];
  if (!signature) {
    console.warn('Webhook received without x-didit-signature header.');
    return { statusCode: 403, body: 'Missing signature' };
  }

  try {
    const expectedSignature = crypto
      .createHmac('sha256', DIDIT_WEBHOOK_SECRET)
      .update(event.body)
      .digest('hex');

    if (expectedSignature !== signature) {
      console.error('Webhook signature mismatch. Expected:', expectedSignature, 'Received:', signature);
      return { statusCode: 403, body: 'Invalid signature' };
    }

    const payload = JSON.parse(event.body);
    console.log('Successfully verified and parsed Didit webhook:', payload);

    // Implement your business logic here based on the webhook payload
    // Examples: update user status, trigger further actions, store results
    // For instance, if it's an ID Verification completion:
    // if (payload.event_type === 'session.completed' && payload.data.workflow_type === 'kyc') {
    //   console.log('KYC Session Completed for vendor_data:', payload.data.vendor_data);
    //   // Process KYC results, update user profile, etc.
    // }

    return { statusCode: 200, body: 'Webhook received and processed' };
  } catch (error) {
    console.error('Error processing webhook:', error);
    return { statusCode: 500, body: 'Internal server error' };
  }
};

在这段代码中,我们使用您的DIDIT_WEBHOOK_SECRET计算原始请求体的HMAC SHA256哈希,并将其与Didit提供的x-didit-signature头进行比较。如果它们不匹配,请求将被拒绝,从而防止未经授权的访问或欺骗事件。这种强大的验证过程对于维护身份验证工作流的安全性至关重要,尤其是在处理来自Didit的ID验证、人脸匹配或AML筛选服务的敏感数据时。

配置Didit发送Webhooks

一旦您的Lambda函数部署完毕并拥有API Gateway端点URL,最后一步是告诉Didit在哪里发送其Webhooks。这可以通过Didit管理API或Didit商业控制台轻松完成。

通过Didit管理API:

您可以使用PATCH /v3/webhook/端点以编程方式更新您的Webhook配置。这允许您设置webhook_url,指定webhook_version(推荐v3),甚至安全地轮换您的secret_shared_key

curl -X PATCH https://verification.didit.me/v3/webhook/ \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_DIDIT_API_KEY" \
  -d '{
    "webhook_url": "YOUR_API_GATEWAY_ENDPOINT",
    "webhook_version": "v3"
  }'

YOUR_DIDIT_API_KEY替换为您的实际Didit API密钥,并将YOUR_API_GATEWAY_ENDPOINT替换为部署Serverless函数后AWS API Gateway提供的URL。

通过Didit商业控制台:

或者,导航到Didit控制台,转到设置 -> Webhooks,然后将您的API Gateway端点URL粘贴到指定字段中。您还可以在此处查看和轮换您的Webhook密钥。Didit的模块化设计确保了这些重要集成的配置简单明了,让您可以专注于构建您的核心应用程序。

Didit如何提供帮助

Didit提供了一个AI原生、开发者优先的身份平台,使集成高级身份验证变得简单安全。我们的模块化架构允许您选择所需的精确组件,从ID验证(OCR、MRZ、条形码)和被动及主动活体检测到1:1人脸匹配、AML筛选与监控以及年龄估计。通过提供免费的核心KYC且无设置费用,Didit使各种规模的企业能够以不高的成本实施强大的身份解决方案。

我们全面的API文档和即时沙盒环境确保开发人员可以快速入门,而我们的Webhook系统,如所示,旨在实现可靠性和安全性。通过Didit,您可以访问全球验证网络、编排工作流和结构化身份数据,所有这些都通过清晰的API提供。这意味着您可以自信地构建自定义Webhook监听器,与Didit强大的后端无缝集成,确保满足您所有身份验证需求的实时更新。

准备好开始了吗?

准备好亲身体验Didit了吗?立即获取免费演示

使用Didit的免费套餐开始免费验证身份。

身份与欺诈基础设施。

一个 API 即可实现 KYC、KYB、交易监控和钱包筛选。5 分钟即可集成。

让 AI 总结此页面
使用AWS Lambda和API Gateway构建Didit Webhook监听器.