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

问题描述

因此尝试集成WebAuthN。并且,如果要更轻松地检查与平台无关的(FIDO2安全密钥)(一般是否支持webauthN-我们继续进行,也许以后再插入USB密钥),我将找不到一种方法来检查与平台无关的方法(Windows Hello,指纹扫描仪等)验证者。 isUserVerifyingPlatformAuthenticatorAvailable()看起来很满足,但

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

对于我的MacBook(Chrome,Firefox,Safari)始终返回true。此外MacBook没有任何身份验证器,并尝试进行参数

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

最终显示为“此设备不支持此网站要求的安全密钥类型。”消息(我的MacBook绝对没有指纹扫描仪,所以这很合理!)

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

解决方法

isUserVerifyingPlatformAuthenticatorAvailable()返回布尔值的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