メインコンテンツへスキップ
イリノイ州(BIPA)、テキサス州(CUBI)、コロラド州では、事業者が自撮りや身分証の写真から顔の形状データを取得する前に、通知と明示的な同意書面が必要です。Diditは、これらの法律が対象とする人に対して、最初の顔撮影の前に同意ステップを表示でき、その回答をセッションに証拠として保存します。 このページでは、ステップが表示されるタイミング、表示できるアプリ、そして回答が判定とWebhookにどのように反映されるかを説明します。
Diditはステップを表示し、回答を記録します。お客様のユーザー体験が、事業に適用される生体情報関連の法律を満たしているかどうかは、お客様が判断してください。このページは法的助言ではありません。実装については顧問弁護士に確認してください。

ステップが表示されるタイミング

次の両方が当てはまる場合に、セッションで同意ステップが表示されます。
  1. ワークフローが顔を撮影する。 ライブネスチェック、顔照合、年齢推定のいずれかのステップ、本人確認ステップが撮影するフロントカメラの自撮り(オフにしていない場合)、またはセッション全体の動画録画。
  2. アプリケーションの同意モードが要求している。 自動モードでは、以下のトリガーのいずれかに該当する場合です。常にモードでは、顔を撮影するすべてのセッションで求められます。
ステップは、最初の顔撮影の前に表示されます。対象の州が示されるのが本人確認書類だけの場合は、書類の撮影の直後、自撮りの前に表示され、本人が同意するまで、書類の撮影画像から顔の形状データが計算されることはありません。 Diditは、本人がフローを開いたときに要件を確認し、該当するまで各ステップでも再び確認します。セッションで同意が必要になると、その後も必要な状態が続きます。

同意モード

モードは、コンソールのアプリケーションの設定 > データとプライバシー > 生体データの同意で選択します。変更はすべて監査ログに記録されます。

自動モードでステップが表示されるトリガー

Diditは次のルールを順に確認し、最初に該当したものをbiometric_consent.triggerに記録します。 VPN、プロキシ、ホスティングネットワークだけで確認が求められることはありません。 DiditはそのIPを他のIPと同様に判定します。イリノイ、テキサス、コロラドのIPであればステップが表示され、それ以外の場所であれば表示されません。ステップが求められるのは、対象の州であることを示す明確な証拠(IP、IDを発行した州、申告された州)がある場合、または本人が州不明のまま米国にいると判断される場合(ip_unknown)のみです。対象の州にいる人が、別の場所に出口を持つVPNを使い、対象の州が発行していないIDを提示した場合は、確認は求められません。そのケースを対象にする必要がある場合は、常にモードを使うか、user_stateを送信してください。 あと2つの値は、同意が求められた理由ではなく、セッションの同意がどう処理されたかを示します。

すでに把握している情報をDiditに伝える

セッションの作成には、このための任意のフィールドが2つあります。

ステップを表示するアプリ

ステップは、それを表示できるアプリで必要になります。Diditは、アプリが行うリクエストごとにこれを判断します。

4.10.0未満のネイティブSDK

4.10.0より前にリリースされたネイティブSDKは同意ステップを認識しないため、Diditがこれらに同意を求めることはありません。本人確認はこれまでとまったく同じように実行されます。自撮りやその他の顔撮影は受け付けられて処理され、セッションは通常どおり判定に進みます。 Diditは、与えられていない同意を記録することはありません。セッションで同意が必要だったのに、古いSDKが顔を撮影した場合、判定には次のように表示されます。
イリノイ、テキサス、コロラドの人をネイティブアプリで認証する場合は、ネイティブSDK 4.10.0以降にアップグレードしてください。 アップグレードするまで、これらのセッションは明示的な同意なしに完了し、自撮りの前に同意を取得する責任はお客様にあります。
本人が同じセッションをホスト型フローで続ける場合(別の端末、または一部のライブネスの種類でアプリが開くWebView)、ホスト型フローがステップを表示し、本人が回答するまでそこでは顔を撮影しません。そこで与えられた同意には、すでに同意なしで顔が撮影されているため、reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"が残ります。

本人に表示される内容

ステップでは、何が収集され、なぜ収集され、誰が保有し、どれくらいの期間保管されるかが本人に示され、生体データポリシーへのリンクが表示されます。ボタンは同意して続行の1つだけで、本人が同意のチェックボックスをオンにするまで無効のままです。 Diditは回答を証拠として保存します。回答した日時、表示された文面のバージョンとハッシュ、言語、ワークフローのステップ、リクエストのIP、位置情報、ユーザーエージェントです。本人が同意すると、その回答は確定します。

本人が同意しない場合

このステップには拒否ボタンがありません。同意したくない人はフローを離脱します。顔は撮影されず、セッションは、本人が完了しなかった他のセッションと同様にAbandonedで終了します(検証ステータスをご覧ください)。別の認証方法を案内してください。

APIでの同意の拒否

判定には、declinedステータスとBIOMETRIC_CONSENT_DECLINEDという理由がAPIの値として残ります。現在、Diditの画面に拒否を選べるものはないため、ホスト型フローとネイティブSDKが拒否を記録することはありません。拒否が記録されたセッションは次のようになります。
  • Declinedで終了し、他の拒否と同様にstatus.updated Webhookが発火します。
  • biometric_consent.statusがdeclined、reasonとdecline_reasonがBIOMETRIC_CONSENT_DECLINED、declined_atに時刻が入ります。
  • 拒否のあとは顔を撮影しません。セッションがすでに保持しているすべての顔画像と顔テンプレートが削除されます。自撮り、書類撮影時のフロントカメラの自撮り、書類の顔写真の顔の切り抜き、ライブネスとセッション全体の動画が対象です。face_data_deleted_atに削除された時刻が記録されます。判定ではそれらが返されなくなり、削除は元に戻せません。
  • 書類の画像と、そこから読み取ったデータは保持されます。拒否はこれらに影響しません。

判定とWebhookでの扱い

すべてのユーザー認証の判定には、セッションの取得と、セッションのWebhookのdecisionに、biometric_consentオブジェクトが含まれます。セッションが一度も評価されなかった場合(たとえば、顔撮影のないワークフロー)はnullです。 ホスト型フローで本人が同意したセッションの例です。
この例は短縮したものです。すべてのフィールドと型は、データモデルに記載されています。

関連ドキュメント