メインコンテンツへスキップ
Diditの位置情報検証ステップは、本人確認の実施中に本人がどこにいるかを確認します。デバイスの位置(ブラウザーまたはネイティブSDK)または接続のIP位置情報を一度だけ読み取り、許可エリアと禁止エリア、IP位置情報、書類に記載された住所と照合します。 ワークフローとAPIではGEOLOCATION機能として扱われ、設定はgeolocation_*キー、結果はセッションの判定に含まれるgeolocation_checks[]です。

利用すべきケース

  • 一部の法域でのみライセンスを保有しており(ギャンブル、証券仲介、貸付など)、申込時に本人がその法域内にいたことを証明する必要がある場合。
  • 制裁対象地域やサービスを提供していない州など、禁止された場所にいる人を排除する必要がある場合。
  • IP位置情報やIDの住所から大きく離れたデバイス位置、偽装された位置、VPN、エミュレーターなど、不正検知のシグナルをもう一つ追加したい場合。
  • 本人の移動や履歴は不要で、セッション中に取得した1回の測位結果だけが必要な場合。

仕組み

通知と許可

本人には、位置情報が必要な理由と、この認証のために一度だけ読み取られることが表示されます。 その後、ブラウザーまたはスマートフォンが許可を求めます。 Diditは本人が同意した通知(バージョン、言語、日時)を結果のconsentとして記録します。

1回の試行につき1つの位置

クライアントは、精度が十分になるか、試行ごとのタイムアウト(デフォルトは20秒)が切れるまで、最も良い測位結果を保持します。 各試行には5分間有効でセッションに紐付けられた使い捨てのチャレンジが含まれるため、傍受された送信を再利用(リプレイ)することはできません。

チェック

Diditは、精度、鮮度、おおよその位置情報の許可、なりすましのシグナル、エリア、IP位置情報および書類の住所までの距離、VPN・プロキシ・Tor・エミュレーターの検出結果、本人の過去のチェックを判定します。

結果

各検出結果は警告を発生させ、その警告に設定されたアクション(NO_ACTION、REVIEW、DECLINE)がステップのステータスを決定します。 最も強いアクションが優先されます。

位置の取得元

位置の取得元はgeolocation_position_sourceで選択します。 デバイスに位置情報を要求するノードでは、位置が得られなかった試行は、拒否または失敗の状況に応じて判定されます。IP位置情報がその代わりに使われることはありません。

設定のデフォルト値と制限

すべてのキーは任意です。 全一覧はワークフロー機能設定リファレンスにあります。

プリセット

geolocation_presetは、未設定のままにしたすべてのアクションのデフォルトを設定します。 licensingは、許可エリア外、禁止エリア内、VPNまたはTor経由、またはエミュレーターで取得された位置情報を却下し、プロキシはレビューに回します。 fraud_screeningは同じ基準で判定しますが、licensingで却下されるものはすべてレビューに回します。 明示的に設定したアクションが常に優先されます。

ジオフェンシング

is_geolocation_geofencing_enabledをオンにし、geolocation_areasを列挙します。 エリアには、国全体、1つの国の地域(ISO 3166-2)、円(1〜500 km)、多角形(3〜200点)を指定できます。 許可エリア内の位置のみが合格し、禁止エリアは常に許可エリアより優先されます。 1つのリストには最大50個のエリアを含めることができ、少なくとも1つの許可エリアが必要です。 Diditは位置の中心だけでなく、精度円全体を判定します。
  • すべての許可エリアの完全に外側にある円はLOCATION_OUTSIDE_GEOFENCEとなります。
  • 判定を左右する境界をまたぐ円はLOCATION_GEOFENCE_UNDETERMINEDとなり、「外側」と判定されることはありません。
  • 禁止エリアの完全に内側にある円はLOCATION_IN_BLOCKED_AREAとなり、許可エリアの判定結果に加えて発生します。
国や地域の範囲は、海岸線ではなく、他の陸地が始まる地点で終わります。 本人にはサービスを利用できる場所が表示されますが、どのエリアが禁止されているかは一切表示されません。 エリアのルールはip_onlyステップでも機能し、IP位置情報に基づいて判定されます。 従来のgeolocation_geofencing_by_country設定も引き続き使用できますが、geolocation_areasと併用することはできません。

距離チェック

geolocation_document_distance_basisは使用する住所を選択します。選択肢はdocument(本人確認書類、次に住所証明)、proof_of_address、またはdeclared(セッション作成時のexpected_details.address)です。 geolocation_travel_tolerance_enabledを有効にすると、直近geolocation_travel_max_days日以内に住所の近くで確認された本人は、現在住所から離れていてもフラグが立てられません。 移動許容によっても、VPN、なりすまされた位置、ブロック対象エリア、許可エリア外の位置は免除されません。

なりすましと完全性のシグナル

  • モックプロバイダー:AndroidとiOSは、位置が測定ではなくシミュレートされたものである場合にそれを報告します。
  • デバイスアテステーション:ネイティブSDKはデバイスアテステーションを添付できます。アテステーションに失敗した場合は常に却下されます。アテステーションがない場合は記録され、デフォルトではアクションは実行されません。ブラウザはデバイスアテステーションを実行できないため、失敗ではなくunsupportedとして記録されます。
  • VPN、プロキシ、Tor:位置情報を共有した接続で検出されます。いずれかに対するアクションがNO_ACTION以外の場合、試行回数が残っている間は、本人にそれをオフにして再度確認するよう求めます。
  • エミュレーター:ネイティブアプリでのみ報告されます。再試行してもデバイスは変わらないため、エミュレーターが検出されるとその試行でステップが終了します。
  • リプレイ:別のセッションで提示されたチャレンジは常に却下されます。

結果

ステップで受け入れられた試行には、1つのoutcomeがあります。 試行回数が残っている間は、半径が広い、古い、おおよその位置、拒否、または許可エリア外もしくはブロック対象エリア内という結果の場合、本人に再試行を求めます。警告を発するのは最後の試行のみです。 シミュレートされた位置、またはワークフローがアクションを実行する対象のエミュレーターが報告された場合、ステップはその試行で終了します。

ユーザー体験

同意と権限

本人が通知に同意し、システムのプロンプトに応答するまで、何も読み取られません。 通知には、位置情報はこの認証のために1回だけ読み取られ、本人の移動の記録ではないことが記載されています。 拒否した人はgeolocation_refusal_pathに従って扱われます。
  • retry_then_handoffは、試行回数が残っている間は再度許可を求め、その後スマートフォンで続行するよう提案します。
  • continue_without_locationは、位置情報なしで続行することを提案し、拒否を結果として記録します。
  • end_sessionは、最初の拒否でステップとセッションを終了します。geolocation_permission_denied_actionがREVIEWまたはDECLINEである必要があり、セッションが承認されることはありません。
geolocation_allow_skipを有効にすると、本人はいつでも位置情報なしで続行でき、ステップはgeolocation_unavailable_actionによって判定されます。

ブラウザ

ホスト型フローはブラウザに位置情報を要求し、サイトで位置情報がオフになっている場合はChromeとSafari向けの手順を表示します。 ブラウザは正確な許可とおおよその許可を区別できないため、Webでの結果ではLOCATION_APPROXIMATE_ONLYが発生することはなく、モックプロバイダー、エミュレーター、デバイスアテステーションが報告されることもありません。 PCは正確な位置を共有できないため、フローは本人のスマートフォンで同じ認証を続行するためのQRコードを提示します(geolocation_allow_qr_handoff、デフォルトで有効)。スマートフォンでの操作が完了すると、PC側は自動的に次に進みます。 フローをiframeに埋め込む場合は、allow属性にgeolocationを含めてください。コンテキスト内iframeを参照してください。 位置情報の権限ポリシーをブロックしているページは、本人の拒否ではなくサイトの判断として扱われます。

ネイティブSDK

iOSおよびAndroidのSDKはOSに位置情報の権限を要求し、デバイスアテステーションとモック位置情報フラグを添付できます。 iOSではInfo.plistにNSLocationWhenInUseUsageDescriptionを追加してください。AndroidではSDKがACCESS_FINE_LOCATIONとACCESS_COARSE_LOCATIONを宣言し、ワークフローにこのステップがある場合にのみ実行時に許可を求めます。 ネイティブSDKを参照してください。 iOSまたはAndroidでおおよその位置のみが許可された場合、geolocation_accuracy_modeがapproximate_allowedでない限り、LOCATION_APPROXIMATE_ONLYが発生します。 このステップに対応していない古いアプリまたはSDKのビルドは、セッションが停止したままにならないよう、unsupported_clientで完了扱いになります。

判定で返される内容

セッションの判定とstatus.updated Webhookには、2つのリストが含まれます。
  • geolocation_checks[]:位置情報ステップごとに1項目で、そのステップで採用された試行とそのwarningsを保持します。
  • geolocation_attempts[]:すべての位置情報ステップのすべての試行が、古い順に並びます。
すべてのフィールドについては、位置情報検証レポートを参照してください。 座標、精度、都市、国はエンドユーザーの個人データです。そのため、ワークフローのレスポンス属性を使って、判定で返すgeolocation_checksのフィールドを制限できます。

料金

位置情報検証の料金はチェック1件あたり$0.05で、無料枠の対象外です。 チェックが実行されて結果が返されるため、Diditは結果にかかわらず、セッション内の位置情報ステップごとに1回課金します。 同じステップ内での再試行は無料です。 再提出によってステップがもう一度完了した場合は、再度課金されます。

サンドボックス

サンドボックスのセッションでも、同じホスト型フローで同じステップが実行され、デバイスやブラウザは実際の位置を報告します。 サンドボックスのセッションはIP照会サービスに接続しないため、IPの比較にはセッションがすでに保持している情報のみが使われます。 利用は料金0で記録されるため、サンドボックスのセッションが課金されることはありません。 このステップには、特定の結果を返す特殊な入力値はありません。

関連ページ

最終更新日 2026年11月1日