Authenticationは新しい機能です。DiditAuth for Android はリリースによって異なります。配布情報、バージョン、呼び出し可能なシグネチャはここでは確定していません。推測したパッケージをインストールしたり、本人確認SDKをAuthentication SDKとして使用したりしないでください。
アプリケーションの準備
DiditアプリケーションでAuthenticationが有効になっていることを確認し、コンソールからサインインオリジン(https://<slug>.auth.didit.me、サンドボックスの場合は<slug>.sandbox.auth.didit.me)をコピーします。
アプリケーションとランタイムがサポートする正確なコールバックURLを登録します。App Linksの所有権を検証してください。任意のカスタムURLスキームが受け付けられると想定しないでください。
サンドボックスと本番環境の設定は、コールバック処理や保存された認証情報も含めて分けて管理します。
本人確認やモニタリングを連携する前に、安定した個人のマッピング方法を決めておきます。
ホスト型ログインにはシステムブラウザのタブを使用し、戻ってきたApp Linkを検証します。ネイティブのパスキーには、設定済みのリライングパーティドメインとプラットフォームの認証情報フローが必要です。
ホスト型フローの実装
{origin}/sign-inのURLでシステムブラウザのタブを開きます。新しいランダムなstate、S256のPKCEチャレンジ、登録済みのredirect_uriを指定します。ベリファイアはその試行の間だけアプリ内に保持してください。基盤となるプロトコルはJavaScriptクイックスタート で説明しています。ネイティブコードでは、ブラウザのグローバルオブジェクトではなく、プラットフォームの暗号機能とURL処理を使用してください。
コールバック時には、1回限り有効なコードをtoken/で交換する前に、state、トランザクションの有効期間、コールバック先を検証します。元のベリファイアと正確なリダイレクトURIを使用してください。ブラウザのキャンセルや閉じる操作は、ログイン成功ではありません。
リフレッシュトークンはプラットフォームで保護された暗号化ストレージに保存してください。プレーンなプリファレンスファイル、アナリティクス、クラッシュログには決して保存しないでください。現在のセッションは、エンドユーザーのBearerトークンを使ったGET session/で検証します。リフレッシュ処理を直列化し、両方のトークンをまとめて置き換え、サインアウト後はユーザー固有の状態を消去してください。リクエストの仕様とリフレッシュトークン再利用時の動作については、トークンとJWKS を参照してください。
ネイティブSDKのリリースプレビュー
ネイティブのAuthenticationモジュールでは、サインイン、現在のセッションへのアクセス、トークンの取得、サインアウト、ステップアップを、デバイスシグナルの自動収集とともに提供する予定です。ネイティブのパスキーと保護されたトークンストレージもこのリリースに含まれます。ラッパーAPIは公開済みのプラットフォーム仕様に従います。設計例から推測したコンストラクタ引数やメソッドシグネチャをコピーしないでください。
モジュールがリリースされるまでは、そのアダプターを無効にしておくか、有効化済みのアプリケーション向けにレビュー済みのホスト型プロトコル実装を使用してください。パッケージのインストールだけを根拠に、動作するネイティブAuthenticationクイックスタートとして案内しないでください。
本人確認とモニタリングの連携
バックエンドは、認証された個人からvendor_dataを導出します。そしてその個人のために本人確認セッションを作成するか、スコープ付きのモニタリングトークンを発行します。アプリに返すのはセッションの認証情報またはスコープ付きトークンだけです。APIキーはサーバー上に保持します。
本人確認が必要な場合は、Android本人確認SDK を使用してください。お使いのプラットフォームでのモニタリング対応については、SDKによる取引の送信 に従ってください。サインイン、本人確認、取引の判定はそれぞれ別に扱ってください。
連携の検証
コールドスタート状態のアプリへの復帰、バックグラウンドとフォアグラウンドの切り替え、ブラウザでのキャンセル、コールバックの不一致、コードのリプレイ、トークンの有効期限切れ、同時リフレッシュ、MFA、ログアウト、別のユーザーとしてのサインインをテストしてください。そのリリースが利用可能になったら、対応デバイスでパスキーの登録とサインインをテストしてください。デバイス専用のチェックは、対象プラットフォームで実行されるまで未検証のままです。