Webhooks
Webhooksを使用すると、データが利用可能かどうかを確認するためにAPIをポーリングするのではなく、k-ID Engineで発生しているイベントをリアルタイムで購読できます。
Webhooksとは?
Webhooksは、さまざまな目的に使用できます。例:
- チャレンジ完了結果の処理
- 年齢確認結果の処理
- k-IDセッションの変更の処理
Webhooksの設定
WebhooksはCompliance Studioで設定され、イベントが発生したときにk-ID Engineが呼び出すURLを指定します。URLは安全なHTTPS URLである必要があります。k-ID Engineは、イベントデータを含むJSONペイロードでURLにPOSTリクエストを送信します。
Webhooksは個別の製品に関連付けられています。複数のk-ID製品がある場合、すべての製品に同じエンドポイントを使用できますが、API呼び出し(たとえば/session/get)を行うために、正しい製品固有のk-ID APIキーを取得する必要があることに注意することが重要です。
Webhooksは、Compliance Studioの製品の開発者設定セクションで設定できます。

Webhookイベント構造
webhook URLに送信されるJSONペイロードには、以下のフィールドが含まれます:
eventType- 発生したイベントのタイプ。data- イベントに関連付けられたデータ。
X-Event-Typeヘッダーもイベントタイプとともに送信されます。
Webhookリクエストの検証
Webhooksはパブリックインターネット経由で送信されるため、リクエストがk-IDから来ていることを検証することが重要です。これは、設定されたwebhookシークレットを使用してイベントペイロードの署名を検証することで行われます。
すべてのリクエストには、以下のヘッダーが含まれます:
X-Signature-Timestamp- リクエストのタイムスタンプ(UNIXエポック秒)。X-Signature-Hmac-Sha256- UTF-8エンコードされたタイムスタンプとリクエスト本文を連結し、webhookシークレットをキーとしてHMAC SHA-256キー付きハッシュを計算したもの。小文字の16進数文字列としてエンコードされます。
署名が無効な場合、リクエストは401ステータスコードで拒否される必要があります。検証された署名を持つwebhookリクエストは、200ステータスコードで処理および受け入れられます。
検証コードの例
const crypto = require("crypto");
// [Compliance Studio](/compliance-studio/products/creating-new-product)で設定されたwebhookシークレット。
const SECRET = "your-secret";
const timestamp = req.get("X-Signature-Timestamp");
const signature = req.get("X-Signature-Hmac-Sha256");
const body = req.rawBody; // 生のリクエスト本文(文字列として)。
// 期待される署名を計算する。
const hmac = crypto.createHmac("sha256", SECRET);
hmac.update(timestamp + body);
const expectedSignature = hmac.digest("hex");
// 署名を安全に比較する。
if (
!crypto.timingSafeEqual(
Buffer.from(signature, "hex"),
Buffer.from(expectedSignature, "hex")
)
) {
return res.status(401).end("Unauthorized");
}
イベントタイプ
| イベントタイプ | 説明 |
|---|---|
Challenge.StateChange | 親の同意チャレンジの状態が変更されたときに発行される |
Verification.Result | 確認試行の結果とともに発行される |
Account.Delete | アカウントが削除されたときに発行される |
AgeAssurance.Result | Age Assurance評価の結果とともに発行される(非推奨、Verification.Resultに置き換え) |
ParentalConsent.Granted | 親の同意が付与されたときに発行される |
Session.ChangePermissions | 親によってセッション権限が変更されたときに発行される |
Session.Delete | セッションが削除されたときに発行される |
Test | webhookが正しく機能していることを確認するために使用される |