Случайное исключение NotSupportedError с использованием WebAuthn - PullRequest
0 голосов
/ 28 января 2020

Мы используем 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 }
        ]
    }
});

Как избежать появления браузером этого исключения?

...