我正在构建一个使用Webauthn进行无密码登录的网站。目前,这在适用于 Windows 和 macOS 的 Chrome 上运行良好。
我正在使用 YubiKey 5 来测试我的实现,它支持使用 PIN 来提供用户验证,而不仅仅是普通的用户存在(即用户触摸键的按钮)。
但是,当我尝试在 Android 9 上的 Chrome 76 上使用同一站点时,系统不会提示我输入密码,因此未设置用户验证标志,并且我的登录(按设计)失败。
谷歌在 Android 7+ 兼容 FIDO2 方面做了很多工作,但除了一篇过时的文章提到:
我们还在研究 CTAP 2 和 WebAuthn 支持的更高级流程,例如 PIN 保护的身份验证器、本地帐户选择(而不是输入用户名或密码)和指纹注册。
现在支持指纹注册;即使 Windows 和 macOS 版本的 Chrome 76 支持PIN 保护的身份验证器,是否仍然不受支持?
这是我呼吁的相关部分navigator.credentials.create()
,应该要求用户验证:
"authenticatorSelection": {"requireResidentKey": false, "userVerification": "required"}