メインコンテンツへスキップ
Diditが750万ドルを調達、本人確認と不正対策のインフラを構築
Didit
ブログ一覧へ
ブログ2026年3月7日

Cloudflare WorkersでWebhookを保護する:Didit連携ガイド (JA)

Cloudflare Workersを使用して、Didit本人確認のための堅牢で安全なWebhookエンドポイントを構築する方法を学びましょう。このガイドでは、HMAC署名検証、タイムスタンプ検証、およびWebhooksを保護するためのベストプラクティスについて説明します。.

By Didit更新日
securing-webhooks-with-cloudflare-workers-a-didit-integration-guide.png

Cloudflare Workersによるセキュリティ強化Cloudflare Workersは、Webhooksを安全に処理するための理想的なサーバーレス環境を提供し、エッジレベルの保護と効率的な署名検証を実現します。

HMAC署名検証は極めて重要受信するWebhooksのHMAC-SHA256署名を常に検証し、その真正性と完全性を確認することで、不正なデータ注入や改ざんを防ぎます。

タイムスタンプ検証によるリプレイ攻撃の軽減タイムスタンプチェックを実装し、Webhookリクエストが最新であることを確認することで、悪意のあるアクターによって古い正当なリクエストが再送信されるリプレイ攻撃から保護します。

Diditが安全な本人確認を簡素化DiditのAIネイティブプラットフォームは、すべての本人確認製品に対して堅牢なリアルタイムWebhook通知を提供し、アプリケーションへの安全で信頼性の高いデータ配信を保証します。

今日の相互接続されたデジタル環境において、Webhooksはサービス間のリアルタイム通信の要です。これらは、本人確認の結果、支払い確認、ユーザーアクティビティなどのイベントに対して瞬時の通知を可能にします。しかし、Webhooksの利便性には、受信データの真正性と完全性を確保するという重大なセキュリティ課題が伴います。適切な保護策がなければ、アプリケーションはスプーフィング、改ざん、またはリプレイ攻撃に対して脆弱になる可能性があります。

このガイドでは、Cloudflare Workersを使用してDidit本人確認のためのセキュアなWebhookエンドポイントを構築する方法を説明します。Cloudflare Workersは、エッジで動作する強力なサーバーレスプラットフォームであり、最小限の遅延と最大限の信頼性でWebhooksを処理および保護するのに理想的です。AIネイティブの本人確認プラットフォームであるDiditは、リアルタイムのKYC通知を配信するためにセキュアなWebhooksに依存しており、Diditの堅牢な本人確認ソリューションを活用するあらゆるビジネスにとって、この統合は極めて重要です。

Webhooksを保護する理由

ユーザーが本人確認に失敗したにもかかわらず、合格したと偽って通知するWebhookを受け取った場合を想像してみてください。あるいは、悪意のあるアクターが古い正当なWebhookを再生し、システム内でアクションを複数回トリガーするかもしれません。これらのシナリオは、Webhookセキュリティの極めて重要な必要性を浮き彫りにします。

Webhookエンドポイントに対する主な脅威は次のとおりです。

  • スプーフィング: 攻撃者が偽のWebhookを送信し、Diditになりすまして、システムに不正なアクションを実行させます。
  • 改ざん: 攻撃者が正当なWebhookを傍受し、サーバーに到達する前にそのペイロードを改ざんします。
  • リプレイ攻撃: 攻撃者が正当なWebhookをキャプチャし、後で再送信して同じアクションを再度トリガーし、重複したトランザクションやその他の問題を引き起こす可能性があります。

Webhooksを保護するには、送信者の身元を確認し、データが改ざんされていないことを確認する必要があります。Diditは、HMAC-SHA256署名とタイムスタンプ検証を通じて、これを行うための堅牢なメカニズムを提供しており、これをCloudflare Workerに実装します。

Didit Webhookシークレットの設定

Didit Webhooksを検証する前に、固有のWebhookシークレットキーが必要です。このキーは、暗号署名検証にとって最も重要です。取得方法は次のとおりです。

  1. Diditコンソールにログインします。
  2. 設定APIキーに移動します。
  3. Webhookシークレットキーをコピーします。

このシークレットキーは安全に保管し、決して公開しないでください。Cloudflare Workersの場合、Workerシークレットまたは環境変数として保存するのが最適です。

Didit Webhooks用のセキュアなCloudflare Workerの構築

Cloudflare Workersは、Cloudflareのグローバルネットワーク上でユーザーの近くで実行されるJavaScript、TypeScript、またはWebAssemblyアプリケーションです。これにより、受信Webhookリクエストを非常に高速かつスケーラブルに処理できます。ここでは、Didit Webhooksを安全に処理するWorkerを作成するためのステップバイステップガイドを示します。

1. Cloudflare Workerの作成

まず、新しいCloudflare Workerプロジェクトをセットアップします。これにはwrangler CLIツールを使用できます。

npx wrangler generate didit-webhook-handler
cd didit-webhook-handler

2. Didit WebhookシークレットをCloudflareシークレットとして追加

Webhookシークレットを安全に保つために、Workerにシークレットとして追加します。

npx wrangler secret put DIDIT_WEBHOOK_SECRET

プロンプトが表示されたら、DiditコンソールからWebhookシークレットキーを貼り付けます。

3. index.jsにWebhookロジックを実装

Workerのindex.jsファイルには、Didit Webhooksの受信、検証、処理のロジックが含まれます。主な手順は次のとおりです。

  1. 生の要求本文の読み取り: HMAC署名は生の要求本文から生成されるため、検証前に解析しないことが重要です。
  2. HMAC-SHA256署名の検証: X-Signatureヘッダーで提供される署名を、DIDIT_WEBHOOK_SECRETと生の要求本文を使用して生成した署名と比較します。
  3. タイムスタンプの検証: X-Timestampヘッダーをチェックして、リクエストが最近のものであることを確認します(例:5分以内)。これにより、リプレイ攻撃を防ぎます。
  4. JSONの解析と処理: 検証が成功した場合、JSON本文を解析し、本人確認の結果を処理します。

Workerコードの基本的な例を次に示します。

import { createHmac } from 'crypto'; // Cloudflare Workers provide 'crypto' module

export default {
  async fetch(request, env, ctx) {
    if (request.method !== 'POST') {
      return new Response('Method Not Allowed', { status: 405 });
    }

    const diditWebhookSecret = env.DIDIT_WEBHOOK_SECRET;
    if (!diditWebhookSecret) {
      return new Response('Webhook secret not configured', { status: 500 });
    }

    const signature = request.headers.get('X-Signature');
    const timestamp = request.headers.get('X-Timestamp');
    const rawBody = await request.text();

    if (!signature || !timestamp || !rawBody) {
      return new Response('Missing required webhook headers or body', { status: 400 });
    }

    // 1. Validate Timestamp (e.g., within 5 minutes)
    const FIVE_MINUTES_IN_SECONDS = 300;
    const currentTimestamp = Math.floor(Date.now() / 1000);
    if (Math.abs(currentTimestamp - parseInt(timestamp, 10)) > FIVE_MINUTES_IN_SECONDS) {
      return new Response('Webhook timestamp too old or in the future', { status: 403 });
    }

    // 2. Verify HMAC-SHA256 Signature
    const expectedSignature = createHmac('sha256', diditWebhookSecret)
      .update(`${timestamp}.${rawBody}`)
      .digest('hex');

    if (expectedSignature !== signature) {
      return new Response('Invalid webhook signature', { status: 403 });
    }

    // 3. Process the webhook payload
    try {
      const payload = JSON.parse(rawBody);
      // Log or process the payload, e.g., update user status in your database
      console.log('Received Didit webhook:', payload);

      // Example: Accessing verification status
      if (payload.event === 'session.completed' && payload.data.status === 'approved') {
        console.log(`User ${payload.data.vendor_data} successfully verified.`);
        // Trigger further actions like granting access or updating user profile
      }
      // Didit offers various products like ID Verification, Passive & Active Liveness, and AML Screening.
      // The webhook payload will reflect results from these checks.

      return new Response('Webhook processed successfully', { status: 200 });
    } catch (error) {
      console.error('Error parsing webhook body:', error);
      return new Response('Error parsing JSON payload', { status: 400 });
    }
  },
};

4. Workerのデプロイ

コードの準備ができたら、Cloudflareにデプロイします。

npx wrangler deploy

デプロイ後、CloudflareはWorkerのURLを提供します。これは、Webhooksを受信するためにDiditコンソールで設定するエンドポイントです。

DiditにWebhooksを送信するように設定する

セキュアなCloudflare Workerがデプロイされたら、最後のステップは、リアルタイム通知をどこに送信するかをDiditに伝えることです。

  1. Diditコンソールに戻ります。
  2. ワークフローに移動し、設定したいワークフローを選択します(例:Diditの本人確認と受動的・能動的生体認証を使用するKYCワークフロー)。
  3. ワークフロー設定で、Webhook URL設定を見つけます。
  4. デプロイしたCloudflare WorkerのURLを入力します。
  5. 変更を保存します。

これで、本人確認セッションが完了したり、そのステータスが変更されたりするたびに、DiditはセキュアなWebhook通知をCloudflare Workerに送信し、Workerはそれを検証して処理します。

Diditがどのように役立つか

Diditは、セキュリティと開発者エクスペリエンスを核として設計されています。当社のAIネイティブの本人確認プラットフォームは、複雑な検証ワークフローを簡単に構築できるモジュール式アーキテクチャを提供します。Webhooksに関して、Diditは次の方法でプロセスを簡素化します。

  • 安全なWebhook通知の提供: すべてのDidit WebhooksはHMAC-SHA256署名で署名され、タイムスタンプが含まれているため、受信するデータの真正性と完全性が保証されます。これは、ID検証、1対1の顔照合、AMLスクリーニングなど、データの正確性が最も重要となる製品にとって不可欠です。
  • リアルタイム更新: 検証プロセスのあらゆる段階で即座に通知を受け取り、アプリケーションがユーザー検証の結果に即座に対応できるようにします。
  • 包括的なデータ: Webhookペイロードには、受動的・能動的生体認証、電話とメールの検証、住所証明など、さまざまなDidit製品からの結果を含む、検証セッションに関する必要な詳細がすべて含まれています。
  • 開発者ファーストのアプローチ: Diditは、インスタントサンドボックス、明確な公開ドキュメント、クリーンなAPIを提供し、統合を簡単に行えます。無料のCore KYCティアと、セットアップ費用なしの成功報酬型モデルにより、簡単に開始してスケールアップできます。

Didit WebhooksをセキュアなCloudflare Workerと統合することで、リアルタイムの本人確認更新のための堅牢で信頼できるチャネルを確立し、ビジネスとユーザーを保護します。

すぐに始められますか?

Diditの実際の動作をご覧になりませんか?今すぐ無料デモをお申し込みください。

Diditの無料ティアで、無料で本人確認を始めましょう。

本人確認と不正対策のインフラ。

KYC、KYB、取引監視、ウォレットスクリーニングを一つのAPIで。5分で統合できます。

AIにこのページの要約を依頼する
Cloudflare WorkersでWebhookを保護する:Didit連携ガイド.