关于Web Extension能否作为FIDO认证器及浏览器FIDO认证器列表机制的技术问询
Web Extension能否作为FIDO认证器及浏览器FIDO认证器列表机制的技术问询
嘿,这个问题问得很到位!我来拆解一下这两个核心点:
一、浏览器是怎么确定要展示的FIDO认证器列表的?
浏览器其实是依托WebAuthn API和系统底层的FIDO服务来完成这件事的,具体流程大概是这样:
- 首先,当网页触发FIDO认证请求时,浏览器会调用系统级的FIDO组件(比如Windows上的WebAuthn服务、macOS的Touch ID框架、Linux的libfido2库)。
- 这些系统组件会主动扫描当前可用的认证设备:包括内置硬件(比如笔记本的指纹传感器、Windows Hello面部识别)、USB连接的安全密钥(像YubiKey这类)、还有通过蓝牙/NFC配对好的移动设备(比如手机上的FIDO2认证器)。
- 后续浏览器只会筛选出符合FIDO2/WebAuthn标准、且处于可连接/激活状态的设备,那些未配对、驱动出错或者不兼容的设备会被直接排除。
- 另外,不少浏览器会做体验优化,优先展示用户最近使用过的认证器,减少用户的选择成本。
二、Web Extension能不能加入这个认证器列表?
直接让Web Extension出现在浏览器原生的认证器选择弹窗里是做不到的——因为这个列表是系统FIDO服务返回的设备枚举结果,Web Extension没有权限去修改这个系统层面的输出。
不过,你可以用另一种思路实现类似的效果:在Extension里做一个FIDO2认证器模拟器,然后通过内容脚本或后台脚本拦截网页的WebAuthn调用,自己提供一套认证选项。举个具体的例子:
- 当网页调用
navigator.credentials.create()(注册)或者navigator.credentials.get()(登录)时,你的Extension可以捕获这个请求。 - 接着弹出自己的自定义UI,让用户选择你的模拟认证器,完成身份验证的交互流程。
- 最后把符合WebAuthn格式的认证结果返回给网页,实现和原生认证器类似的功能。
要注意的是,这种方式并不是把Extension嵌入到浏览器原生的选择列表里,而是搭建了一套并行的认证流程,需要用户或者网页配合使用才行。
备注:内容来源于stack exchange,提问作者aryzing
相关产品推荐
相关产品推荐

