認証情報マネージャーの [認証情報を復元] 機能を使用すると、新しいデバイスのセットアップ時にアプリ アカウントを復元できます。この API はデベロッパー プレビュー版であり、Android 9 以降を搭載し、Google Play 開発者サービス(GMS)Core バージョン 242200000 以降を搭載しているすべてのデバイスで利用できます。認証情報の復元機能のメリットは次のとおりです。
- シームレスなユーザー エクスペリエンス: ユーザーは、個々のアプリに手動でログインしなくても、アプリ アカウントを復元できます。
- ユーザー エンゲージメントの向上: 新しいデバイスのセットアップ時にアカウントを復元できると、ユーザーはアプリの使用を継続する可能性が高くなります。
- 開発作業の削減: 認証情報の復元機能は認証情報マネージャーと統合されているため、パスキーをすでにサポートしているデベロッパーは、認証情報の復元機能を追加できます。
仕組み
[認証情報の復元] を使用して、関連する認証情報を作成、取得、消去できます。
- 復元認証情報を作成する: ユーザーがアプリにログインしたときに、そのアカウントに関連付けられた復元認証情報を作成します。この認証情報はローカルに保存され、ユーザーが Google バックアップを有効にしてエンドツーエンドの暗号化が利用可能な場合はクラウドに同期されます(アプリはクラウドへの同期をオプトアウトできます)。
- 復元用認証情報を取得する: ユーザーが新しいデバイスをセットアップすると、アプリは認証情報マネージャーから復元用認証情報をリクエストできます。これにより、追加の入力を必要とせずにユーザーを自動的にログインできます。
- 復元認証情報を消去する: ユーザーがアプリからログアウトしたら、関連付けられた復元認証情報を削除する必要があります。
[認証情報の復元] 機能は、パスキーを実装済みのバックエンド システムとスムーズに統合できます。この互換性は、パスキーと復元キー([認証情報の復元] 機能で使用される認証情報の種類)の両方が、基盤となる技術仕様に準拠しているという事実に起因しています。この調整により、認証情報の復元プロセスで、パスキー対応システムに保存されているユーザー認証情報を効果的に取得して復元できるため、さまざまなプラットフォームや認証方法で一貫したユーザー フレンドリーなエクスペリエンスを提供できます。
実装
Restore Credentials API は、認証情報マネージャー Jetpack ライブラリから使用できます。使用を開始するには、以下のステップを実行してください。
プロジェクトに認証情報マネージャーの依存関係を追加します。
// build.gradle.kts implementation("androidx.credentials:credentials:1.5.0-alpha03")
CreateRestoreCredentialRequest
オブジェクトを作成する。CredentialManager
オブジェクトでcreateCredential()
メソッドを呼び出します。val credentialManager = CredentialManager.create(context) // On a successful authentication create a Restore Key // Pass in the context and CreateRestoreCredentialRequest object val response = credentialManager.createCredential(context, createRestoreRequest)
この生成された復元認証情報は、webauthn 認証情報の一種であり、復元キーと呼ばれます。
ユーザーが新しいデバイスをセットアップするときに、
CredentialManager
オブジェクトでgetCredential()
メソッドを呼び出します。// Fetch the Authentication JSON from server val authenticationJson = ... // Create the GetRestoreCredentialRequest object val options = GetRestoreCredentialOption(authenticationJson) val getRequest = GetCredentialRequest(Immutablelist.of(options)) // The restore key can be fetched in two scenarios to // 1. On the first launch of app on the device, fetch the Restore Key // 2. In the onRestore callback (if the app implements the Backup Agent) val response = credentialManager.getCredential(context, getRequest)
ユーザーがアプリからログアウトしたら、
CredentialManager
オブジェクトのclearCredentialState()
メソッドを呼び出します。// Create a ClearCredentialStateRequest object val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL) // On user log-out, clear the restore key val response = credentialManager.clearCredentialState(clearRequest)
バックアップ エージェントを使用している場合は、onRestore
コールバック内で getCredential
部分を実行します。これにより、アプリデータの復元後すぐにアプリの認証情報が復元されます。