> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Flutter 認証クイックスタート

> DiditでFlutterアプリに認証を導入する手順。ホスト型ログイン、コールバックの検証、安全なセッション管理を設定し、本人確認やモニタリングとも連携できます。

> [!WARNING]
>
> Authenticationは新しい機能です。**didit\_auth**はリリース状況に依存します。配布座標、バージョン、呼び出し可能なシグネチャはここでは確定していません。推測したパッケージをインストールしたり、本人確認SDKをAuthentication SDKとして使用したりしないでください。

## アプリケーションを準備する

1. DiditアプリケーションでAuthenticationが有効になっていることを確認し、コンソールからサインインオリジン(`https://<slug>.auth.didit.me`、サンドボックスの場合は`<slug>.sandbox.auth.didit.me`)をコピーします。
2. アプリケーションとランタイムがサポートする正確なコールバックURLを登録します。アプリリンクの所有権を検証してください。任意のカスタムURLスキームが受け入れられると想定しないでください。
3. サンドボックスと本番環境の設定は、コールバックの処理や保存された認証情報も含めて分けて管理します。
4. 本人確認やモニタリングとの連携を開始する前に、個人を一貫して対応付ける方法を決めておきます。

コールバックリンクはiOSとAndroidでそれぞれ個別に設定し、テストしてください。Authenticationラッパーは、本人確認を扱うdidit\_sdkとは別のものです。

## ホスト型フローを実装する

`{origin}/sign-in`のURLでネイティブのシステム認証ブラウザを開きます。新しく生成したランダムな`state`、S256のPKCEチャレンジ、登録済みの`redirect_uri`を渡します。ベリファイアはその試行に限りアプリ内で保持してください。基盤となるプロトコルは[JavaScriptクイックスタート](https://docs.didit.me/ja/authentication/quickstarts/javascript.md)で確認できます。ネイティブコードでは、ブラウザのグローバルオブジェクトではなく、プラットフォームの暗号機能とURL処理を使用してください。

コールバック時には、一度だけ使用できるコードを`token/`で交換する前に、state、トランザクションの有効期間、コールバック先を検証します。元のベリファイアと完全に一致するリダイレクトURIを使用してください。ブラウザのキャンセルや閉じる操作は、ログイン成功ではありません。

リフレッシュトークンは、プラットフォームが保護するネイティブストレージに保存してください。プレーンな設定ファイル、アナリティクス、クラッシュログには決して保存しないでください。現在のセッションは、エンドユーザーのBearerトークンを使用して`GET session/`で検証します。リフレッシュ処理は直列化し、両方のトークンをまとめて置き換え、サインアウト後はユーザー固有の状態を消去してください。リクエストの仕様とリフレッシュトークン再利用時の挙動については、[トークンとJWKS](https://docs.didit.me/ja/authentication/tokens-and-jwks.md)を参照してください。

## ネイティブSDKのリリースプレビュー

ネイティブのAuthenticationモジュールは、サインイン、現在のセッションへのアクセス、トークンの取得、サインアウト、ステップアップを、デバイスシグナルの自動収集とともに提供する予定です。ネイティブのパスキーと保護されたトークンストレージは、そのリリースに含まれます。ラッパーAPIは公開される各プラットフォームの仕様に従います。設計例から推測したコンストラクタ引数やメソッドシグネチャをコピーしないでください。

モジュールがリリースされるまでは、そのアダプターを無効にしておくか、有効化したアプリケーション向けにレビュー済みのホスト型プロトコルの実装を使用してください。パッケージのインストールだけを根拠に、動作するネイティブAuthenticationクイックスタートとして案内しないでください。

## 本人確認とモニタリングを連携する

バックエンドは、認証済みの人物に基づいて`vendor_data`を導出します。そしてその個人のために本人確認セッションを作成するか、スコープ付きのモニタリングトークンを発行します。アプリに返すのはセッションの認証情報またはスコープ付きトークンのみです。APIキーはサーバー上に保持します。

本人確認が必要な場合は、[Flutter本人確認SDK](https://docs.didit.me/ja/integration/native-sdks/flutter-sdk.md)を使用してください。お使いのプラットフォームでのモニタリング対応については、[SDKによる取引の送信](https://docs.didit.me/ja/transaction-monitoring/sdk-transaction-submission.md)に従ってください。サインイン、本人確認、取引の判定はそれぞれ別のものとして扱ってください。

## 連携を検証する

コールドスタート状態のアプリへの復帰、バックグラウンドとフォアグラウンドの切り替え、ブラウザでのキャンセル、一致しないコールバック、コードの再利用、トークンの期限切れ、同時リフレッシュ、MFA、ログアウト、別のユーザーとしてのサインインをテストしてください。パスキーのリリースが利用可能になったら、対応デバイスでパスキーの登録とサインインをテストしてください。デバイス上でのみ行う確認は、対象プラットフォームで実行されるまでは未検証のままです。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.