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