堅牢なパスキー エクスペリエンスを提供するには、アプリで次の実装を行うことをおすすめします。
- ユーザーのパスキー管理: アプリの設定内に専用のパスキー管理セクションを含め、ユーザーがパスキーを管理できるようにします。
- 認証情報プロバイダの統合: 認証情報プロバイダと通信するために、アプリサーバーは登録、認証、削除用のパスキー エンドポイントを実装できます。
ユーザーのパスキー管理
ユーザーがパスキーを管理できるようにするには、アプリに専用のパスキー管理セクションを追加して、ユーザーがパスキーの作成、表示、名前変更、削除を行えるようにします。
利用可能なパスキーを表示する
パスキーのアプリ設定内で、認証情報の作成に使用された認証情報プロバイダ、作成日、最終使用日などの情報をユーザーに提供します。
認証情報プロバイダの情報を取得するには、対応するパスキーに関連付けられた Authenticator Attestation Globally Unique Identifier(AAGUID)を使用します。AAGUID は、パスキーの作成時に返される PublicKeyCredential の一部です。AAGUID を使用すると、パスキーを作成した認証情報プロバイダを識別できます。詳しくは、AAGUID でパスキー プロバイダを特定するをご覧ください。
アプリでは、パスキーに関する次の詳細情報を表示できます。
- パスキー名: パスキーの登録時に付けられた名前が表示されます。理想的な名前は、認証情報プロバイダ(AAGUID を使用)に基づいています。プロバイダを特定できない場合は、
android.os.Buildのデバイスモデル情報を使用します。 - プロバイダのロゴ: 認証情報プロバイダのロゴを表示します。この視覚的なキューにより、ユーザーは管理するパスキーをすばやく特定できます。
- タイムスタンプ: 作成タイムスタンプと最終使用タイムスタンプを指定します。この情報は、ユーザーが認証情報を管理し、古いパスキーや未使用のパスキーを特定するのに役立ちます。
- 同期ステータス インジケーター: デフォルトでは、パスキーは認証情報プロバイダと同期されますが、同期機能は異なる場合があります。ユーザーの混乱を防ぐため、パスキーが同期をサポートしていない場合は、そのことを明確に示してください。
- 最終ログインの詳細(省略可): 最終ログイン時のブラウザ、OS、IP アドレス、場所などの詳細を入力します。これは、ユーザーが不審なアクティビティの可能性を特定するための貴重なオプション機能です。
これらの詳細の他に、ユーザーが各パスキーを管理(削除または名前変更)できるボタンが画面に表示されるようにします。
複数のパスキーを作成する
ユーザーがパスキーを作成する機会は、ログイン直後など、ユーザー ジャーニー全体を通して提供する必要がありますが、アプリのパスキー設定セクションでは、ユーザーが選択した認証情報プロバイダからパスキーを作成できるようにする必要があります。
アカウントのロックアウトのリスクを軽減するため、ユーザーが異なる認証情報プロバイダで複数のパスキーを登録できるようにします。1 つの認証情報プロバイダにアクセスできなくなった場合(プラットフォームのサポートが終了した場合や、ユーザーがアクセスできなくなった場合など)、別のパスキーを使用してログインできます。データベースがユーザーごとに複数の認証情報の保存をサポートしていることを確認してください。ただし、同じ認証情報プロバイダを使用して同じアカウントのパスキーを作成できないようにすることはできます。
パスキーを削除する
アプリのパスキー設定セクションでは、ユーザーがパスキーを削除できるようにする必要があります。
認証情報プロバイダの統合
アプリサーバーと認証情報プロバイダ間でパスキーの整合性を維持するには、アプリサーバーの事前定義されたパス /.well-known/passkey-endpoints からパスキー管理を有効にします。これにより、認証情報プロバイダはこれらのエンドポイントをパスキー管理に直接使用できます。詳しくは、パスキー エンドポイントを追加するをご覧ください。
参考情報
- パスキー UX ガイド
- 動画: Android アプリでパスキーをサポートして、パスワードへの依存を減らす方法
- Codelab: Android アプリで Credential Manager API を使用して、認証プロセスを簡素化する方法を学習する
- サンプルアプリ: CredentialManager