Неполная реализация протокола CTAP2 (FIDO2) в Chrome?
Я изучал реализацию протокола CTAP2 с Google Chrome (протокол между Fido Authenticator и Fido Client (например, Chrome)), который должен поддерживаться в Chrome начиная с версии 69.
Таким образом, я сбросил запрос chrome на аутентификатор в двух случаях:
1. U2F (CTAP1) с демонстрационным сайтом yubico.
Здесь все идет как положено, и Chrome следует протоколу CTAP1.
2. FIDO2 / Webauthn (CTAP2) с https://webauthn.org/
И браузер ведет себя странно:
- Он начинается с следования протоколу CTAP2 путем отправки AuthenticatorGetInfoRequest
- Аутентификатор отвечает AuthenticatorGetInfoResponse
- Но затем Chrome переключается на протокол CTAP1, отправляя сообщение с запросом регистрации (U2F_REGISTER)
Это проблема с реализацией Chrome: CTAP2 еще не полностью включен (кажется, он реализован в источниках Chromium)?
Или проблема связана с аутентификатором: отправкой ответа, который заставляет Chrome переключиться на CTAP1?
Или что-то еще целиком?
0 ответов
В AuthenticatorGetInfoRequest аутентификатор должен ответить строковым списком поддерживаемых версий среди "U2F_V2" и "FIDO_2_0". Обратите внимание также, что в случае NFC или CCID аутентификатор только "FIDO_2_0" (CTAP2) должен отвечать непосредственно "FIDO_2_0" по команде SELECT. Я не знаю насчет HID и BLE.
Так что, возможно, ваш аутентификатор перечисляет "U2F_V2" в списке версий протокола в AuthenticatorGetInfoRequest.
Я также полагаю, что кодовая база Chrome по этому поводу развивалась быстро и может быть частичной или не строгой. По моим тестам в начале 2020 года, возможности Chrome CTAP теперь кажутся стабильными и совместимыми.