You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于通过BLE将智能手机作为FIDO2漫游认证器实现Web应用无密登录的技术问询

通过BLE将智能手机作为FIDO2漫游认证器实现Web应用无密登录的技术问询

咱们逐个拆解你的问题,给你清晰的解答:

关于FIDO2、CaBLE和UAF的关系

这个说法完全正确。早期的FIDO2 WebAuthn标准本身并没有原生支持桌面浏览器与智能手机之间通过BLE直接完成跨设备认证——当时要实现手机作为认证器给桌面网页登录,确实更多依赖FIDO UAF协议加推送通知的组合,但UAF现在已经被FIDO联盟逐步淘汰,属于过时方案了。

Google推出的CaBLE(Cross-device BLE)就是专门为FIDO2 WebAuthn补充的跨设备BLE交互扩展,它让桌面端的WebAuthn请求可以直接通过BLE连接到用户的智能手机,把手机当作漫游FIDO2认证器来用,完全符合现代FIDO2标准,也是目前推荐的跨设备无密码登录方案。

至于进度跟踪,你可以关注Chromium的官方issue系统(CaBLE最早由Chromium团队主导实现),或者W3C WebAuthn工作组的扩展提案,里面会有详细的开发、兼容性更新记录。

关于你列出的BLE跨设备认证流程的正确性

你给出的前3步是准确的,我帮你补全并修正完整的标准流程:

  1. 用户在桌面/笔记本的浏览器中访问受保护的Web应用,触发登录需求
  2. 用户选择“无密码登录”的认证方式
  3. 用户提交用户名后点击“无密码登录”,此时浏览器调用WebAuthn API发起认证请求
  4. 依赖方(RP,也就是你的Web应用后端)生成符合WebAuthn标准的认证请求参数(包含RP信息、用户信息、挑战值等),返回给前端浏览器
  5. 浏览器通过CaBLE扩展启动BLE扫描,发现用户的智能手机(前提是手机蓝牙开启且已绑定该RP的认证信息)
  6. 用户的手机收到配对请求弹窗,确认后完成桌面端与手机的BLE配对
  7. 手机上的FIDO2认证器(比如Android的Google Play Services认证器、iOS的iCloud钥匙串)加载WebAuthn请求,引导用户完成本地身份验证(指纹、面部识别或PIN)
  8. 验证通过后,手机通过BLE将生成的认证断言发送回桌面浏览器
  9. 浏览器将认证断言提交给RP后端,后端验证断言的合法性后,完成用户登录

实现建议

  • 浏览器兼容性:目前Chrome、Edge等Chromium系浏览器已经稳定支持CaBLE;Firefox也在推进相关支持,主流桌面浏览器的覆盖率已经很高
  • RP侧开发:不需要额外处理BLE底层逻辑,按标准WebAuthn流程开发即可。可以使用成熟的WebAuthn库,比如@simplewebauthn/server(后端)和@simplewebauthn/browser(前端),这些库已内置支持CaBLE场景的参数处理,只需确保WebAuthn请求中authenticatorSelectionuserVerification设为preferredrequired,保证触发用户本地验证
  • 手机端要求:需要使用支持FIDO2的系统(Android 10及以上、iOS 14及以上),并且开启系统自带的FIDO2认证器(比如Android的“密码管理器”、iOS的“iCloud钥匙串”),无需额外安装第三方APP
  • 测试注意事项:测试时要确保桌面端和手机端蓝牙均开启,且手机已在该Web应用上完成过FIDO2凭证注册(即首次登录时绑定过手机作为认证器)

备注:内容来源于stack exchange,提问作者Chuni Lal Kukreja

火山引擎 最新活动