Get your free and exclusive 80-page Banking Passkey Report
web bluetooth cover

Web Bluetooth API и Passkeys

Узнайте о роли Web Bluetooth API для Passkeys. Мы расскажем, как определение доступности Bluetooth улучшает межсетевую аутентификацию (CDA) с помощью WebAuthn.

Vincent Delitz

Vincent

Created: August 8, 2025

Updated: August 8, 2025


See the original blog version in English here.

Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.

1. Введение: Web Bluetooth API и Passkeys#

Passkeys — это новый стандарт входа в систему в вебе. Одна из ключевых особенностей Passkeys — это межсетевая аутентификация (Cross-Device Authentication, CDA) с помощью Bluetooth и QR-кодов. В этом контексте становится важным еще один веб-API: Web Bluetooth API.

Позволяя веб-приложениям напрямую взаимодействовать с устройствами Bluetooth, Web Bluetooth API играет решающую роль в обеспечении безопасных и эффективных процессов аутентификации (особенно для CDA).

В этой статье мы рассмотрим принципы работы Web Bluetooth API и изучим значение определения доступности Bluetooth для аутентификации с помощью Passkeys. Мы хотим ответить на следующие вопросы:

  1. Что такое Web Bluetooth API?
  2. Как использовать Web Bluetooth API?
  3. Почему определение доступности Bluetooth важно для Passkeys?

2. Что такое Web Bluetooth API?#

Web Bluetooth API — это интерфейс JavaScript, который позволяет веб-приложениям получать доступ к устройствам Bluetooth и обмениваться с ними данными. Он является частью стандарта HTML5 и поддерживается такими браузерами, как Chrome, Edge и Opera. Этот API позволяет веб-приложениям:

  • сканировать находящиеся поблизости устройства Bluetooth Low Energy (BLE)
  • запрашивать разрешение на сопряжение
  • обмениваться данными по протоколу Generic Attribute Profile (GATT).

У Web Bluetooth API есть три ключевые функции.

2.1 getAvailability()#

getAvailability() возвращает promise, который разрешается в булево значение, указывающее, может ли user agent поддерживать Bluetooth (то есть есть ли у устройства модуль Bluetooth). Некоторые user agent'ы позволяют пользователю настраивать параметр, определяющий, какое значение возвращает этот метод.

navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("Это устройство поддерживает Bluetooth!"); } else { console.log("Увы! Bluetooth не поддерживается"); } });
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

2.2 getDevices()#

getDevices() возвращает promise, который разрешается в массив BluetoothDevices, к которым разрешен доступ для данного источника (включая те, что находятся вне зоны действия или выключены). Разрешение получается через предыдущие вызовы Bluetooth.requestDevice().

navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Устройство:", device.name); }); });

2.3 requestDevice()#

requestDevice() возвращает promise для объекта BluetoothDevice с указанными параметрами. Если нет пользовательского интерфейса для выбора, этот метод возвращает первое устройство, соответствующее критериям.

navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Устройство:", device.name); }) .catch((error) => { console.log("Ошибка:", error); });

Подробности и фрагменты кода можно найти здесь. Также здесь можно ознакомиться со стандартом W3C для Web Bluetooth.

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

3. Характеристики Web Bluetooth API#

  • Только по HTTPS: Web Bluetooth API доступен только в безопасных контекстах (HTTPS), что обеспечивает безопасную передачу данных.
  • Требуется действие пользователя: Обнаружение устройств через navigator.bluetooth.requestDevice должно быть инициировано действием пользователя, например касанием или щелчком мыши, из соображений безопасности.

4. Как использовать Web Bluetooth API#

Чтобы проверить поддержку Web Bluetooth API, можно использовать следующий код:

if ("bluetooth" in navigator) { // Web Bluetooth API поддерживается console.log("Web Bluetooth поддерживается!"); } else { // Web Bluetooth API не поддерживается console.log("Web Bluetooth не поддерживается!"); }

Как вызывать конкретные функции, объяснялось выше.

5. Преимущества Web Bluetooth API#

Web Bluetooth API предлагает несколько преимуществ для разработчиков и пользователей:

  • Интерактивность: Позволяет веб-приложениям взаимодействовать с устройствами Bluetooth без нативных приложений или плагинов.
  • Улучшенный пользовательский опыт: Дает доступ к функциям и датчикам беспроводных устройств, таких как пульсометры или элементы управления музыкой.
  • Безопасность и конфиденциальность: Пользователи должны давать разрешение на доступ к устройству, и это разрешение можно отозвать в любой момент.

6. Проблемы с Web Bluetooth API#

Несмотря на свои преимущества, Web Bluetooth API имеет ограничения:

  • Отсутствие поддержки в Safari и Firefox: Не все браузеры поддерживают этот API. В частности, его не поддерживают Safari и Firefox, что может затронуть значительную часть пользователей.
  • Зависимость от возможностей устройства: API работает только с совместимыми устройствами Bluetooth Low Energy (BLE). Кроме того, устройства могут быть недоступны для обнаружения из-за таких факторов, как низкий заряд батареи или нахождение вне зоны действия.
  • Развивающаяся спецификация: Поскольку Web Bluetooth API является черновиком спецификации, он может изменяться. Разработчикам нужно следить за последними обновлениями и совместимостью с браузерами.
  • Ложноположительные срабатывания: Иногда API может сообщать о поддержке Bluetooth, когда на самом деле она отсутствует.
  • Контролируемая пользователем доступность: Пользователи и браузеры могут отключать разрешения для Bluetooth, из-за чего getAvailability() будет возвращать false, даже если адаптер Bluetooth присутствует. Это контролируется через Permissions-Policy:Bluetooth. Аналогично, даже если getAvailability() возвращает true, адаптер Bluetooth может быть не включен, или пользователи могут отказать в разрешении на использование API при запросе.

7. Распространение Web Bluetooth API#

Распространение Web Bluetooth API все еще растет. По данным Can I Use на июнь 2024 года, 76,53% пользователей по всему миру имеют устройства с поддержкой Web Bluetooth API.

Однако отсутствие поддержки в Safari и Firefox остается серьезным препятствием, влияющим на пользовательский опыт в этих браузерах. Кроме того, некоторые функции (например, Bluetooth.getDevices()) должны быть явно включены пользователем, что может затруднить использование API в фоновом режиме.

Актуальные данные можно найти по ссылке: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility

8. Почему определение доступности Bluetooth важно для Passkeys?#

Есть одна основная причина, по которой доверяющим сторонам следует знать о доступности Bluetooth, если они хотят предложить Passkeys на своих сайтах и в приложениях.

8.1 Ключевая функция Passkeys: межсетевая аутентификация (CDA) через QR-коды и Bluetooth#

Одна из новых, инновационных функций Passkeys — это межсетевая аутентификация (Cross-Device Authentication, CDA), также известная как гибридная аутентификация. Эта функция позволяет пользователям аутентифицироваться на одном устройстве (обычно на настольном компьютере или ноутбуке) с помощью своих мобильных устройств через QR-коды и Bluetooth. Этот гибридный метод аутентификации повышает безопасность и удобство, обеспечивая бесшовный пользовательский опыт. Большинство нетехнических пользователей сегодня привыкли сканировать QR-коды, будь то во время пандемии COVID для регистрации или через мессенджеры, ориентированные на мобильные устройства, которые позже добавили поддержку для настольных компьютеров (например, WhatsApp или Telegram).

Выбор стратегии CDA имеет решающее значение в начале любого проекта с Passkeys. Чем больше вы полагаетесь на CDA, тем лучше должна быть его поддержка и надежность. Поэтому определение доступности Bluetooth на устройстве является обязательным.

8.2 Bluetooth не всегда доступен и может ухудшить UX при CDA#

Однако не все устройства имеют возможность подключения по Bluetooth или он может быть выключен. Для доверяющих сторон, предлагающих Passkeys, важно определять доступность Bluetooth, чтобы понять, можно ли использовать CDA или необходим другой, резервный метод аутентификации. Web Bluetooth API предлагает решение, позволяя веб-приложениям проверять доступность Bluetooth на устройствах пользователей.

Пожалуйста, имейте в виду, что CDA не всегда работает стабильно и иногда может не подключаться без видимых причин. Более того, из-за новизны API иногда он возвращает неверные результаты.

8.3 Различное влияние отсутствия Bluetooth в Firefox и Safari#

Отсутствие Web Bluetooth API в Firefox и Safari является проблемой, особенно для Firefox.

С Safari проблема менее остра, поскольку устройства на macOS, где может выполняться CDA, имеют встроенный Bluetooth с самых ранних моделей. Однако, если Bluetooth на macOS не работает, у пользователей могут возникнуть проблемы с межсетевой аутентификацией, и им придется устранять неполадки в настройках или использовать резервный метод. iPhone, работающие под управлением Safari, имеют встроенный Bluetooth с момента их появления.

Тем не менее, Firefox представляет собой серьезную проблему, поскольку он популярен на устройствах с Windows. Если пользователь использует Firefox и хочет применить CDA, доверяющая сторона не может надежно определить, доступен ли Bluetooth, так как Web Bluetooth API не реализован. Это может привести к плохому пользовательскому опыту, когда пользователи могут застрять на определенных этапах, не зная, что делать.

Как мы уже видели в предыдущих статьях, устройства на Windows отстают в плане внедрения Passkeys (см. также State of Passkeys). Давайте посмотрим, насколько распространена поддержка Bluetooth.

9. Требуется ли Bluetooth в Windows 10?#

В Windows 10 нет строгого требования к наличию Bluetooth, но большинство современных ноутбуков и настольных компьютеров оснащены модулями Bluetooth. Однако пользователь может его отключить, или он может отсутствовать в некоторых конфигурациях, особенно на кастомных сборках ПК.

10. Требуется ли Bluetooth в Windows 11?#

Windows 11, как и Windows 10, не требует наличия Bluetooth в обязательном порядке. Однако тенденция к более интегрированному и современному оборудованию означает, что большинство устройств, совместимых с Windows 11, скорее всего, будут иметь Bluetooth. Тем не менее, пользователи могут его отключить, что повлияет на реализацию CDA.

11. Рекомендация#

В таблице ниже показано, можно ли определить, готово ли настольное устройство к работе с Bluetooth и, следовательно, может ли оно использоваться как клиент CDA:

Операционная системаАппаратная поддержка BluetoothОпределение Bluetooth в браузере
ChromeEdgeFirefoxSafari
Windows 10низкая
Windows 11средняя
macOSвысокая

Имейте в виду, что даже если ваше оборудование поддерживает Bluetooth, эта функция может быть отключена пользователем. Когда Bluetooth выключен, пользователь все равно может использовать CDA, потому что он может согласиться на его активацию, что работает для Windows и Mac: Запрос на включение Bluetooth в macOS

Запрос на включение Bluetooth в Windows 11

Информация о доступности Bluetooth особенно интересна для Windows 10 и Windows 11, где поддержка Bluetooth ниже, и существует очень высокая вероятность того, что потребуется межсетевая аутентификация (при входе с помощью Passkeys). Все последние устройства macOS поддерживают Bluetooth. Эти устройства macOS потенциально также имеют прямой доступ к Passkeys, хранящимся в iCloud Keychain, поэтому они не вызывают беспокойства.

На Windows 10 и Windows 11: используйте getAvailability(), чтобы выяснить, может ли работать Bluetooth. В случае, если у пользователя есть только Passkeys, не связанные с Windows, вы можете немедленно переключиться на другие варианты аутентификации.

В ситуации, когда доступны только гибридные Passkeys, запуск аутентификации с помощью Passkeys не приведет к успешному входу, а скорее заведет пользователя в тупик. Для всех остальных браузеров на Windows 10 и Windows 11, к сожалению, нет другого способа выяснить, есть ли поддержка CDA.

12. Заключение: Web Bluetooth API для Passkeys#

Web Bluetooth API представляет собой мощный инструмент для улучшения аутентификации с помощью Passkeys за счет возможностей Bluetooth. Понимая и используя этот API, разработчики могут создавать более безопасные и удобные для пользователя методы аутентификации. Однако им также необходимо учитывать его ограничения и обеспечивать надежные резервные механизмы для поддержания бесшовного пользовательского опыта на разных браузерах и устройствах.

В этой статье мы дали ответы на три ключевых вопроса:

  1. Что такое Web Bluetooth API? Web Bluetooth API — это интерфейс JavaScript, позволяющий веб-приложениям получать доступ к устройствам Bluetooth и обмениваться с ними данными, обеспечивая безопасное взаимодействие.
  2. Как использовать Web Bluetooth API? Используйте Web Bluetooth API, вызывая такие функции, как getAvailability(), getDevices() и requestDevice(), чтобы проверить поддержку Bluetooth, получить список доступных устройств и запросить сопряжение.
  3. Почему определение Bluetooth важно для Passkeys? Интегрируя Web Bluetooth API в свою стратегию внедрения Passkeys, вы можете создать отличное решение для аутентификации на основе Passkeys, которое будет переключаться на CDA только в том случае, если устройства могут определить поддержку Bluetooth.

Для получения дополнительной информации о Web Bluetooth API и коллекции примеров, пожалуйста, перейдите по этой ссылке.

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start Free Trial

Share this article


LinkedInTwitterFacebook

Enjoyed this read?

🤝 Join our Passkeys Community

Share passkeys implementation tips and get support to free the world from passwords.

🚀 Subscribe to Substack

Get the latest news, strategies, and insights about passkeys sent straight to your inbox.

Related Articles