Проверьте браузер на возможность U2F

Есть ли способ проверить, поддерживает ли браузер U2F или нет?

Я знаю, что на данный момент Chrome - единственный браузер, который официально поддерживает U2F, но есть дополнения для Firefox, а также могут быть настроенные браузеры, которые, возможно, получили U2F.

Я не хочу отказываться от таких браузеров, как Google, потому что пользователи аддона не смогут его использовать.

Я видел, что у GitHub, похоже, есть способ увидеть это (потому что он различает Firefox с аддоном и без него), но я понятия не имею, как это сделать.


person My1    schedule 27.01.2016    source источник
comment
кстати: я не хочу использовать фильтрацию на основе Useragent по трем причинам: а) можно проверить более напрямую, как видно с github, б) когда любой новый браузер реализует U2F, каждый должен обновлять свои фильтры, а надстройки обычно этого не делают в) почему вы думаете, что почти все браузеры имеют Mozilla в своих строках UA?   -  person My1    schedule 12.04.2016


Ответы (2)


Воспользуйтесь библиотекой caniuse-support, которая использует информацию из службы caniuse.com (https://caniuse.com/#feat=u2f) и использует библиотеку bowser (детектор браузера):

const {
  getSupport,
  currentBrowser,
} = CaniuseSupport;

const test1 = getSupport("u2f"); // current browser

console.log(
  "Get feature support of U2F current browser (" +
    currentBrowser.id +
    " " +
    currentBrowser.version +
    "):",
  test1.level
);

песочница CodePen

person Artee    schedule 02.02.2019
comment
интересная идея, но, похоже, не работает должным образом: Get feature support of U2F current browser (opera 57.0): none помимо того факта, что сама база данных caniuse испорчена хромом для Android, который ДЕЙСТВИТЕЛЬНО поддерживает U2F (при условии, что у вас установлен аутентификатор Google), но отмечен красным цветом - person My1; 03.02.2019

Сейчас 2019 год, и на самом деле произошли некоторые интересные улучшения всего материала U2F.

API-интерфейс браузера U2F был по существу заменен на WebAuthn, и, хотя он уверен, что он выбрасывает некоторые старые браузеры, на самом деле нет подходящего старого браузера, который действительно поддерживает U2F API, который все еще широко используется в качестве автоматического обновления хрома и Chromium и его форки - единственные браузеры, которые изначально поддерживают U2F из коробки.

а с новым webauthn у вас есть функции, которые вы действительно можете проверить, основываясь на том, что я использую в библиотеке, которую я использую в примере документа:

if (!navigator.credentials || !navigator.credentials.create) { 
  //try navigator.credentials.get for login instead of create
  //tell the user
}
person My1    schedule 20.11.2019