FIDO2 API を使用すると、Android アプリは、ユーザーの認証を目的として、強力で証明済みの公開鍵ベースの認証情報を作成して使用できます。この API は、BLE、NFC、USB を経由するローミング認証器(セキュリティ キー)と、指紋または画面ロックを使った認証を実現するプラットフォーム認証器に対応した WebAuthn クライアントの実装を提供します。
統合
FIDO2 API のエントリ ポイントは Fido2ApiClient です。
この API は、次の 2 つのオペレーションをサポートしています。
登録と署名の両方でユーザーの操作が必要です。
ウェブサイトとの相互運用性
ユーザーがウェブサイトと Android アプリ間で認証情報をシームレスに共有できるようにするのは簡単です。そのためには、デジタル アセット リンクを利用します。関連付けを宣言するには、ウェブサイトに Digital Asset Links JSON ファイルをホストし、Digital Asset Links ファイルへのリンクをアプリのマニフェストに追加します。
たとえば、https://example.com を Android アプリ com.example.android に関連付ける場合は、次の 3 つの手順が必要です。
ステップ 1. ドメインで assetlinks.json をホストする
次のような JSON ファイルを作成し、https://example.com/.well-known/assetlinks.json でホストします。
[ { "relation" : [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target" : { "namespace" : "web", "site" : "https://example.com" } }, { "relation" : [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target" : { "namespace" : "android_app", "package_name" : "com.example.android", "sha256_cert_fingerprints" : [ "DE:AD:BE:EF" ] } } ] Google からクロール可能であり、HTTP ヘッダー Content-Type: application/json で配信されていることを確認します。
sha256_cert_fingerprints は、アプリの署名証明書の SHA256 フィンガープリントです。詳しくは、Android アプリリンクのドキュメントをご覧ください。
ステップ 2. Android アプリの assetlinks.json へのリンク
Android アプリで、マニフェスト ファイルの <application> に次の行を追加します。
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" /> ステップ 3. asset_statements 文字列リソースを strings.xml ファイルに追加します。
asset_statements 文字列は、読み込む assetlinks.json ファイルを指定する JSON オブジェクトです。文字列で使用するアポストロフィや引用符はエスケープする必要があります。次に例を示します。
<string name="asset_statements" translatable="false"> [{ \"include\": \"https://example.com/.well-known/assetlinks.json\" }] </string> アプリとウェブサイトの関連付けの詳細については、Android の Smart Lock for Passwords のドキュメントをご覧ください。