适用于Android的FIDO2 API

FIDO2 API允许Android应用程序创建和使用经过验证的基于公钥的强大凭据,以对用户进行身份验证。该API提供了WebAuthn客户端实现,该实现支持使用BLE,NFC和USB漫游身份验证器(安全密钥)以及平台身份验证器,该身份验证器允许用户使用其指纹或屏幕锁进行身份验证。

一体化

FIDO2 API入口点是Fido2ApiClient

该API支持两种操作:

  • 当用户将一个身份验证者与一个帐户相关联时,每个帐户的每个身份验证者都完成一次注册
  • 只要依赖方想验证用户身份,就完成签名

注册和签名都需要用户交互。

可以在https://github.com/android/security-samples/tree/master/Fido中找到演示API使用情况的示例应用程序。

与您的网站的互操作性

允许用户在您的网站和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

在您的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文档上SmartLock for Passwords