如何检查 WebAuthn 平台类型的身份验证器?

how to check for WebAuthn platform-type authenticators?

因此尝试集成 WebAuthN。如果对于独立于平台的(FIDO2 安全密钥)检查更容易(通常是否支持 webauthN - 我们继续,也许用户稍后插入 USB 密钥),我找不到检查平台相关的方法(Windows你好,指纹扫描仪等)验证器。 isUserVerifyingPlatformAuthenticatorAvailable() 看起来正是我所需要的,但是

window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
  .then(() => true)
  .catch(() => false)
  .then((x) => console.log(x))

对于我的 MacBook(Chrome、Firefox、Safari)总是 returns 正确。除了 MacBook 没有任何身份验证器并尝试继续

的参数
"authenticatorSelection": {
    "authenticatorAttachment" : "platform", 
    "requireResidentKey":false, 
    "userVerification":"preferred"
}

以“此设备不支持此网站请求的安全密钥类型”结尾。消息(而且我的 MacBook 肯定没有指纹扫描仪,所以这是合理的!)

看到了 similar questions,但只有使用此 isUserVerifyingPlatformAuthenticatorAvailable() 的建议。

isUserVerifyingPlatformAuthenticatorAvailable() returns 一个布尔值的 Promise,所以你的代码看起来应该更像:

window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
  .then(isAvailable => isAvailable)
  .catch(err => false)
  .then(result => console.log("Platform authenticator is available: " + result));

MDN 文章在这里:https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable