Я внедрил проверку FIDO2 для входа и регистрации на своем веб-сайте Express.js. На локальном хосте все работает отлично, но на производстве проверка моего ключа безопасности по отпечатку пальца терпит неудачу три раза подряд в течение секунды, без какого-либо взаимодействия с ключом. После этих сбоев он возвращается к проверке PIN-кода, которая работает должным образом.
Среда
- Бэкэнд: Express.js с использованием библиотеки fido2-lib
- Внешний интерфейс: собственный API navigator.credentials (WebAuthn)
- SSL-сертификат: действителен
- RP_ID: x-x.x.com (правильный формат)
- Происхождение: проверено и действительно
Вот моя конфигурация объекта f2l на стороне сервера:
Код: Выделить всё
const f2l = new Fido2Lib({
timeout: 42,
rpId: RP_ID,
rpName: "X-name",
challengeSize: 128,
attestation: "direct",
cryptoParams: [-7, -257], // ES256 and RS256
authenticatorAttachment: "cross-platform",
authenticatorRequireResidentKey: false,
authenticatorUserVerification: "required"
});
Для проверки я использую следующие параметры:
Код: Выделить всё
const allowCredential = {
type: "public-key",
id: id, // Registered key ID
transports: ['usb', 'ble', 'nfc']
};
Проблема возникает только в рабочей среде во время вызовов:
Код: Выделить всё
navigator.credentials.create()
Код: Выделить всё
navigator.credentials.get()
Проверка отпечатка пальца не удалась три раза менее чем за секунду (нет времени на взаимодействие с пользователем).
Windows сообщает, что проверка не удалась.
После этих ошибок проверка PIN-кода работает нормально.

Наблюдения:
Проблема не возникает на локальном хосте.
Другие сайты, такие как webauthn.io, работают нормально с тем же ключом безопасности и браузером.
У меня нет ошибок в console.log.
Вопрос
- Что мне делать? Как?
- Есть ли у вас идеи по поводу проблемы?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ost-expres
Мобильная версия