https://www.landiannews.com/archives/57473.html
按照效果图,pc 端没有其他操作,手机怎么知道靠近了电脑?
按照我的想法,至少也要手机端搜索下附近蓝牙的 id,跟电脑的蓝牙 id 进行匹配。但是 webjs 不支持获取本机蓝牙 id 的能力,而且 webjs 操作蓝牙也要弹窗提示框进行配对。
1
vevlins OP 是不是必须在 chrome 下?谷歌自家背后做了这个匹配逻辑
|
2
qbqbqbqb 2021-03-04 17:39:37 +08:00 2
这个是 FIDO2 WebAuthn 认证,是新的 Web 标准里东西。相应的物理密钥设备本身就包含 usb, nfc 和蓝牙三种形式,同时还支持非物理密钥比如 Windows Hello,以后的浏览器都要原生支持的。
根本不是什么 js 直接读蓝牙。 |
3
qbqbqbqb 2021-03-04 17:49:38 +08:00
更正一下,“以后的浏览器都要原生支持的”不准确。谷歌的这个认证是同属于 FIDO2 协议的,但更类似于 Windows Hello 这种平台相关的虚拟密钥(和原来就有的蓝牙物理密钥反而关系不大)。这样看来别的浏览器应该没法支持。
|
4
wooyuntest 2021-03-04 20:46:05 +08:00 1
FIDO2 webauthn
可以了解下 yubikey |
5
ysc3839 2021-03-05 00:23:46 +08:00
个人推测是私有协议。
不过 Google 之前推出过一个安全密钥,也是能通过蓝牙进行认证,也有可能存在通用标准,Android 上 GMS 实现了这个标准。 |
6
also24 2021-03-05 00:44:05 +08:00 1
翻了一下,协议在这里:
https://fidoalliance.org/specs/fido-v2.0-rd-20180702/fido-client-to-authenticator-protocol-v2.0-rd-20180702.html#ble 楼主对于『蓝牙 id 』的理解是存在误区的,实际上 BLE 更常用的模式是根据 Service UUID 进行筛选连接。 如果附近只有一个设备提供了指定 UUID 的 Service,那么可以直接连接进行读写触发认证。 而 Web Bluetooth API 也完全具备相应的功能: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API |