如何检测浏览器是否支持webauthn

时间:2019-04-26 11:23:26

标签: webauthn

Webauthn当前仅在有限数量的设备https://caniuse.com/#search=webauthn中受支持。

在JavaScript中,我希望能够在向用户提供登录或加入表单之前检测用户浏览器是否受支持。

检查navigator.credentials似乎可行,但这是检查此支持的正确方法吗?

if(!navigator.credentials) {
  alert('fail');
}

1 个答案:

答案 0 :(得分:1)

通过检查navigator.credentials,您正在检查浏览器是否支持Credentials Management API,而不仅仅是WebAuthn。

凭据管理API到目前为止支持FederatedCredentialPasswordCredentialPublicKeyCredential三种凭据。

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