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 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 App Links 文档

在 Android 应用中,将以下代码行添加到清单文件中的 <application> 下:

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

第 3 步:将 asset_statements 字符串资源添加到 strings.xml 文件中

asset_statements 字符串是一个 JSON 对象,用于指定要加载的 assetlinks.json 文件。您必须对字符串中的所有撇号和引号进行转义。例如:

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

如需详细了解如何将您的应用与网站相关联,请参阅 Android 上的 Smart Lock(密码专用)文档