借助 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 文档。
第 2 步:Android 应用中的 assetlinks.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 上的 Smart Lock(密码专用)文档。