检查凭证是否存在而不提示在Android中输入指纹

问题描述

是否有 API 或其他方法可以确定设备上是否存在不需要先在 Android 中获取我的指纹的凭据?

目前,我可以使用特定的凭据 ID 调用 getSignPendingIntent(PublicKeyCredentialRequestOptions),然后系统会提示我使用我的指纹。提供指纹后,如果凭据在设备上不存在,我将收到错误响应,如果凭据存在,我将收到成功响应。

是否有其他方法可以确定设备上是否存在凭据?

需要知道这一点的一个原因是,如果客户在设备 A 上注册了凭证,但随后访问了设备 B 上的网站。如果他们在设备 B 上,我不想提示他们输入指纹知道他们是否可以使用他们的 WebAuthN 凭证。我想先检查凭证是否存在,否则回退到标准身份验证方法

解决方法

没有办法100%确定。目前最好的解决方案是将 credential id 存储在创建它的本地存储(或 cookie)中。这样,您可以检查是否应该在该设备上(即在该浏览器中)提供指纹登录(又名平台身份验证器)选项。

FIDO 联盟和 W3C WebAuthn WG 已经尝试过改变这一点,但目前还没有完成,主要是出于隐私原因。