Ключ FIDO U2F: проверка подлинности входа в Chrome возвращает код ошибки 4 (работает в FF)
Мы пытаемся добавить аутентификацию с помощью ключа безопасности Yubico FIDO U2F на наш веб-сайт администратора. Это работает в FireFox с установленной надстройкой U2F, но при подписании вызова (с использованием javascript) для входа продолжает возвращаться {errorCode: 4}.
Кто-нибудь знает, почему это может происходить или как я могу отладить, что идет не так?
Заранее спасибо.
подробности
Наш сайт сделан на Java с ZK Framework. На стороне сервера мы используем библиотеку java-u2flib-server. Мы подписываем запросы на стороне клиента, используя javascript в файлах zul, используя высокоуровневые функции API u2f.register и u2f.sign.
Постановка на учет
Для регистрации ключа пользователь сначала вводит имя и пароль и отправляет. Сервер создает RegistrationData и переходит на вторую страницу. Там мы используем функцию javascript u2f.register. В обратном вызове мы отправляем ответ с DeviceRegistration на сервер.
Это работает как в FireFox, так и в Chrome.
Аутентификация / Войти
Вход осуществляется аналогично. При отправке первой страницы сервер выдает DeviceRegistration json и вызов на вторую страницу. Страница использует u2f.sign и отправляет DeviceResponse на сервер в обратном вызове.
Это работает в Firefox, но в Chrome u2f.sign продолжает возвращать {errorCode: 4}.
Согласно документации это означает, что устройство не знает полученную DeviceRegistration, но это кажется маловероятным, так как тот же код работает в Firefox, и я проверил, что они получают одинаковый JSON с сервера.
Код ошибки 4 - DEVICE_INELIGIBLE -
Представленное устройство не подходит для этого запроса. Для запроса на регистрацию это может означать, что токен уже зарегистрирован, а для запроса на подпись это может означать, что токен не знает представленный дескриптор ключа.