Webauthn当前仅在有限数量的设备https://caniuse.com/#search=webauthn中受支持。
在JavaScript中,我希望能够在向用户提供登录或加入表单之前检测用户浏览器是否受支持。
检查navigator.credentials似乎可行,但这是检查此支持的正确方法吗?
if(!navigator.credentials) {
alert('fail');
}
答案 0 :(得分:1)
通过检查navigator.credentials
,您正在检查浏览器是否支持Credentials Management API,而不仅仅是WebAuthn。
凭据管理API到目前为止支持FederatedCredential
,PasswordCredential
和PublicKeyCredential
三种凭据。
WebAuthn构建在PublicKeyCredential
界面之上。参见https://www.w3.org/TR/webauthn/#iface-pkcredential。
所以您需要的是:
if (typeof(PublicKeyCredential) == "undefined") {
alert('fail');
}
这就是为什么当您要求浏览器创建“ WebAuthn凭据”时,需要指定公用密钥类型:navigator.credentials.create({ "publicKey": { ... } })
,请参见https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create#Parameters。