適用於 Android 的 FIDO2 API

FIDO2 API 可讓 Android 應用程式建立及使用受到強力認證的公開金鑰型憑證,用以驗證使用者。API 提供 WebAuthn 用戶端實作,可支援 BLE、NFC 和 USB 漫遊驗證器 (安全金鑰) 及平台驗證器,讓使用者能夠使用自己的指紋或螢幕鎖定功能進行驗證。

整合

FIDO2 API 進入點是 Fido2ApiClient

這個 API 支援兩項作業:

  • 當使用者將驗證器與帳戶建立關聯時,每個驗證器每個帳戶都會註冊一次。
  • 只要依賴方要驗證使用者,系統就會執行簽署作業。

註冊和簽署都需要使用者互動。

如需示範 API 使用情形的範例應用程式,請前往 https://github.com/android/identity-samples/tree/main/Fido2

網站的互通性

讓使用者輕鬆在網站和 Android 應用程式之間共用憑證都很簡單。方法是使用 Digital Asset Links 來完成此作業。如要宣告關聯,您可以在網站上代管 Digital Asset Links JSON 檔案,並在應用程式資訊清單中新增 Digital Asset Link 檔案的連結。

舉例來說,如果想將 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 應用程式連結說明文件

在 Android 應用程式中,在 <application> 底下的資訊清單檔案中新增下列程式碼:

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

步驟 3:在 string.xml 檔案中加入 asset_statements 字串資源

asset_statements 字串是 JSON 物件,指定要載入的 assetlinks.json 檔案。您必須逸出在字串中使用的所有格號和引號。例如:

<string name="asset_statements" translatable="false">
[{
  \"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>

如要進一步瞭解如何為應用程式和網站建立關聯,請參閱 Android 密碼專用 SmartLock 文件