Как решить, может ли устройство войти в систему с отпечатком Webauthn в Javascript? - PullRequest
0 голосов
/ 13 октября 2019

Я создал аутентификацию Webauthn для своего сайта. Сейчас я пытаюсь создать хороший интерфейс для лучшего пользовательского опыта. Мои пользователи не технари.

Меня интересует аутентификация по отпечатку пальца в качестве опции. Webauthn через ключи Yubico 2 или Google Titan очень редко встречается у моих пользователей. Когда пользователи входят в систему с помощью электронной почты и пароля, я хочу показать сообщение типа «Вы хотите зарегистрировать свой отпечаток пальца для следующего доступа? [Зарегистрироваться сейчас]».

Я хочу показать сообщениеправильные пользователи. Итак, как решить, в каких случаях показывать сообщение?

В соответствии с https://caniuse.com/#search=PublicKeyCredential, в первую очередь я могу использовать такой тест:

var support_webauthn = (typeof window['PublicKeyCredential'] !== "undefined")

Этот тест определяет, поддерживает ли браузер открытые ключиаутентификация, но также и прохождение теста. Я не знаю, есть ли на оборудовании датчик отпечатка пальца.

Я знаю, что устройства Android позволяют аутентификацию по отпечатку пальца Webauthn (например, вместо iPhone). Таким образом, в дополнение к этому я могу проверить, является ли ОС Android isAndroid = /android/i.test(navigator.userAgent);

Но в этом случае я не могу показать сообщение пользователям с другим поддерживаемым устройством - например, с MacBook Pro (с датчиком отпечатков пальцев). работает).

Как мне подойти к проблеме?

1 Ответ

0 голосов
/ 12 ноября 2019

Краткий ответ: WebAuthn не позволит вам выполнять такие операции, как определение наличия у Authenticator датчика отпечатка пальца или нет.

Но что вы можете сделать, используя PublicKeyCredential, который позволяет определить, имеет ли пользователь встроенный аутентификатор, такой как Windows Hello, TouchID, устройство Android с датчиком отпечатка пальца (даже без датчика отпечатка пальца, экранная блокировка может обеспечить эквивалентный функционал проверки пользователя), используя PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable . Таким образом, эта функция возвращает логическое значение, и вы можете проверить его с помощью Javascript, если у пользователей есть встроенный аутентификатор, если он обработан таким образом, и вы сможете зарегистрировать пользователя с помощью датчика отпечатков пальцев или блокировки экрана, или же не предлагать пользователю сделать это так просто. Я лично никогда не смотрел на Android, но в целом это полезно для обнаружения встроенных аутентификаторов.

Пример проекта можно найти здесь для Android:

https://fidoalliance.org/developer-tutorial-webauthn-web-fido2-android/ https://codelabs.developers.google.com/codelabs/webauthn-reauth/#0

...