Age Gate & Verifiable Parental Consent
このガイドでは、Age Gate & VPCウィジェットの実装を数ステップで説明し、規制要件を迅速に満たしながら、子供とその保護者の両方にスムーズなユーザー体験を提供します。
End-to-end Widgetは、単一のインターフェースで完全なコンプライアンスフローを処理する包括的なソリューションで、年齢ゲート、VPC、データ通知、権限、設定をすべて一つのシームレスな体験でカバーします。このウィジェットは、保護者が子供のデバイスまたは自分のデバイスで使用でき、同意プロセスの最大限の柔軟性を提供します。
Age Gateとは何ですか?
Age Gateは、年齢制限のあるコンテンツ、機能、またはサービスへのアクセスを許可する前に、ユーザーの年齢を収集および検証するために使用されるメカニズムです。Age Gateは、未成年者のデジタルコンテンツアクセスを管理する法律のコンプライアンスを確保するために、多くの管轄区域で規制要件となっています。
Age Gateには以下の重要な目的があります:
- 規制コンプライアンス: 異なる管轄区域での年齢検証の法的要件を満たす
- コンテンツ保護: 未成年者が不適切なコンテンツにアクセスすることを防ぐ
- データプライバシー: COPPA、GDPR-Kなどの規制に従って、子供のデータを適切に処理する
- 保護者による制御: 保護者が子供のデジタルアクセスについて情報に基づいた決定を下せるようにする
ユーザーの管轄区域を提供することで、End-to-end Widgetは自動的に年齢収集の最適な方法を決定し(まだ提供されていない場合)、その管轄区域の特定の規制に基づいてVPCが必要かどうかをインテリジェントに判断します。これにより、複雑な管轄区域ロジックを実装することなく、コンプライアンスを確保できます。
Verifiable Parental Consent(VPC)とは何ですか?
Verifiable Parental Consent(VPC)は、保護者または信頼できる大人が子供のデジタルコンテンツ、サービス、または機能へのアクセスについて情報に基づいた同意を提供できることを保証する規制要件です。子供が年齢制限のあるコンテンツにアクセスしようとすると、システムはアクセスが許可される前に保護者の承認を必要とするChallengeを作成します。
VPCフローには通常以下が含まれます:
- 年齢収集: 適切な方法で子供の年齢を決定する
- Challenge作成: 保護者の承認が必要な場合に同意Challengeを作成する
- 保護者への通知: 様々なチャネル(メール、QRコードなど)で保護者に通知する
- 同意処理: 保護者がリクエストを確認し、承認または拒否する
- セッション管理: 同意結果に基づいて子供の権限を作成または更新する
前提条件
開始する前に、以下が必要です:
- k-ID Product: k-ID Compliance Studioで製品を作成・設定
- API Key: 製品のDeveloper SettingsページからAPIキーを生成
- Webhook Endpoint(オプションですが推奨): Challengeとセッションイベントを受信するためのセキュアなHTTPSエンドポイントを設定。詳細はWebhooksを参照。
ステップ1: Age Gate & VPCフローの開始
/widget/generate-e2e-url APIを呼び出して、完全なVPCフローを処理するEnd-to-endウィジェットURLを作成します。これにより、ユーザーが年齢収集と保護者同意プロセスを完了するために使用する一意のURLが返されます。
APIキーと一緒にインタラクティブなSwaggerドキュメントを使用して、Age Gate & VPCウィジェットURLを迅速に生成できます。
重要: 実装では、APIキーがクライアント側コードで露出することを防ぐために、サーバー間呼び出しである必要があります。
リクエスト例
POST /api/v1/widget/generate-e2e-url
Content-Type: application/json
Authorization: Bearer your-api-key
{
"jurisdiction": "US-CA"
}
設定フラグ
オプションのflagsパラメータを使用して、フローのどの部分をスキップするかをカスタマイズできます:
skipDataNotices: データ通知と同意収集をスキップskipVerification: 年齢検証方法をスキップ(年齢が既に検証されている場合に有用)skipPermissions: 権限管理をスキップskipPreferences: 設定をスキップ
レスポンス例
{
"id": "7854909b-9124-4bed-9282-24b44c4a3c97",
"url": "https://family.k-id.com/widget?token=eyJhbGciOiJFUzM4NCIs..."
}
ステップ2: Age Gate & VPCウィジェットの表示
返されたURLを使用して、ウェブサイトやアプリにiframeを作成します。ユーザーはこのインターフェースを通じて年齢収集と保護者同意プロセスを完了し、利用可能な方法が管轄区域の要件に応じて自動的に適応されます。

HTML実装
<div id="vpc-container">
<iframe
id="vpc-widget"
src="WIDGET_URL"
width="100%"
height="600"
frameborder="0"
allow="camera;payment;publickey-credentials-get;publickey-credentials-create">
</iframe>
</div>
iframeは以下のような複数の検証方法をユーザーに提示します:
- AgeKey: 初期検証プロセス後に生成される再利用可能で匿名の年齢証明
- 顔認証年齢推定: デバイスのカメラを使用したプライバシー保護年齢推定
- ID文書検証: 政府発行ID検証
利用可能な具体的な方法は管轄区域と製品の設定によって異なります。詳細は検証方法を参照してください
ウィジェットは以下をユーザーに提示します:
- 年齢収集: 管轄区域に適した年齢収集方法
- データ通知: 製品の設定に応じて受け入れるデータ通知
- 権限: 製品の設定に応じて管理する権限
- 保護者同意Challenge: ユーザーが未成年者と判定された場合、保護者の承認のためのChallengeが作成される
具体的なフローは管轄区域と製品の設定によって異なります。
ステップ3: Challengeとセッションイベントの処理
保護者同意のChallengeが作成された場合、結果を処理する必要があります。Challengeとセッション結果は3つの方法で受信できます:
オプションA: リアルタイムJavaScriptイベント(クライアント側)
const handleMessage = (event) => {
const message = event.data;
if (message.eventType === "Widget.AgeGate.Challenge") {
if (message.data.status === "PASS") {
// 保護者が同意を承認 - アクセスを許可
console.log("同意が承認されました:", message.data.sessionId);
grantAccess(message.data.sessionId);
} else if (message.data.status === "FAIL") {
// 保護者が同意を拒否 - アクセスを制限
console.log("同意が拒否されました");
restrictAccess();
}
}
};
window.addEventListener("message", handleMessage);
オプションB: Webhook通知(サーバー側)
Webhookエンドポイントを設定してChallenge.StateChangeとSession.ChangePermissionsイベントを受信:
Challenge.StateChangeイベント:
{
"eventType": "Challenge.StateChange",
"data": {
"id": "683409f1-2930-4132-89ad-827462eed9af",
"productId": 42,
"status": "PASS",
"sessionId": "0ad1641f-c154-4cc2-8bb2-74dbd0de7723",
"approverEmail": "parent@example.com",
"kuid": "123456"
}
}
Session.ChangePermissionsイベント:
{
"eventType": "Session.ChangePermissions",
"data": {
"id": "78c299b2-5c33-4bde-84fe-8fc950fc7a96",
"productId": 42
}
}
オプションC: ポーリング(代替方法)
Challenge IDを使用してChallengeステータスを照会:
GET /api/v1/challenge/get-status?id=683409f1-2930-4132-89ad-827462eed9af
Response:
{
"id": "683409f1-2930-4132-89ad-827462eed9af",
"status": "PASS",
"sessionId": "0ad1641f-c154-4cc2-8bb2-74dbd0de7723"
}
Webhook設定
Age Gate & VPCウィジェットの場合、Webhookエンドポイントが以下を受信するように設定されていることを確認してください:
Challenge.StateChange: 保護者の同意が承認または拒否されたときに通知Session.ChangePermissions: 保護者によってセッション権限が変更されたときに通知
これらのイベントは、適切なアクセス制御を維持し、保護者同意要件のコンプライアンスを確保するために不可欠です。
次のステップ
Age Gate & VPCウィジェットを実装したので、統合を強化するために以下のリソースを探索してください:
- API Reference Documentation: すべてのウィジェットとChallenge APIの詳細ドキュメント
- Webhooks Setup: 本番システム用の堅牢なWebhook処理を実装
- Best Practices: セキュリティと信頼性の高いユーザー体験を確保するためのベ ストプラクティスを実装
- Pre-launch Checklist: 本番投入前に要件を確認
k-IDのAge Gate & VPCウィジェットを使用することで、保護者同意規制のコンプライアンスを迅速に達成しながら、家族にスムーズでプライバシー重視の体験を提供できます。