Android用FIDO2API

FIDO2 APIを使用すると、Androidアプリケーションは、ユーザーを認証する目的で、強力な証明済みの公開鍵ベースのクレデンシャルを作成して使用できます。 APIは、BLE、NFC、およびUSBローミングオーセンティケーター(セキュリティキー)の使用をサポートするWebAuthnクライアント実装と、ユーザーが指紋またはスクリーンロックを使用して認証できるプラットフォームオーセンティケーターを提供します。

統合

FIDO2APIエントリポイントはFido2ApiClientです。

APIは、次の2つの操作をサポートしています。

  • ユーザーがオーセンティケーターをアカウントに関連付けると、アカウントごとにオーセンティケーターごとに1回登録が行われます。
  • 署名は、証明書利用者がユーザーの認証を希望する場合はいつでも行われます。

登録と署名の両方で、ユーザーの操作が必要です。

APIの使用法を示すサンプルアプリケーションは、 https://github.com/android/security-samples/tree/master/Fidoにあります

あなたのウェブサイトとの相互運用性

ユーザーがウェブサイトとAndroidアプリケーション間でクレデンシャルをシームレスに共有できるようにするのは簡単です。これを行うには、デジタルアセットリンクを活用ます。 WebサイトでDigitalAsset Links JSONファイルをホストし、Digital AssetLinkファイルへのリンクをアプリのマニフェストに追加することで関連付けを宣言できます。

たとえば、 https://example.com com.example.android Androidアプリcom.example.androidに関連付ける場合、次の3つの必須手順を実行します。

ステップ1.ドメインでassetlinks.jsonをホストします

このようなJSONファイルを作成し、 https://example.com/.well-known/assetlinks.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提供されていることを確認してください。

Androidアプリで、 <application>下のマニフェストファイルに次の行を追加します。

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

手順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でのSmartLock forPasswordsのドキュメントをご覧ください。