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(密码专用)文档