Мы используем WebAuthn. Хотя некоторые устройства выдают исключения NotSupportedError: The user agent does not support public key credentials.
Вот как мы проверяем, доступна ли функция аутентификации платформы:
async function isWebAuthn() {
return Boolean(
navigator.credentials &&
navigator.credentials.create &&
navigator.credentials.get &&
self.PublicKeyCredential &&
self.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable &&
await self.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
);
}
Мы видим как минимум два устройства, которые выдают исключения каждый раз, когда мы пытаемся вызвать navigator.credentials.create()
.
Mozilla/5.0 (Linux; Android 9; ONEPLUS A3003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 9; LG-H930) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36
Вот вызов:
await navigator.credentials.create({
publicKey: {
authenticatorSelection: {
authenticatorAttachment: "platform",
requireResidentKey: false,
userVerification: "required"
},
challenge: challenge,
rp: { id: document.domain, name: name },
user: {
id: id,
name: name,
displayName: displayName
},
pubKeyCredParams: [
{ type: "public-key", alg: -7 },
{ type: "public-key", alg: -257 }
]
}
});
Как избежать появления браузером этого исключения?