项目99%使用Vibe Coding 用于在部分支持扩展但不兼容WebAuthn的浏览器中提供polyfill
当然如果你不介意安全性且追求方便 在正常支持该API的浏览器上装也完全可行(比如用自动授权)
如果出现问题去设置里开启兼容模式后刷新网页再试(Chromium 137及以上应该是不用的 如KiwiBrowser)
已在KiwiBrowser 狐猴浏览器 雨见浏览器上测试通过(后面两个要打开兼容模式)
至于安全性...当没有就好 至少能用了吧(雾)
WebAuthn Compat 是一个 Chrome 浏览器扩展,为不支持或 WebAuthn 工作异常的浏览器提供 WebAuthn API 的兼容性支持。
- ✅ 完整的 WebAuthn 支持:实现
navigator.credentials.create()和get()API - ✅ 多算法支持:ES256、ES384、RS256、PS256
- ✅ 双模式架构:标准模式和兼容模式,适应不同浏览器环境
- ✅ 安全检查:rpId 验证、iframe 检测等安全警告
- ✅ 凭证管理:完整的凭证管理界面,支持导入导出
- ✅ 自动同意:可配置的自动授权功能
- ✅ Conditional UI:支持密码管理器自动填充场景
- ✅ Manifest V3:使用最新的扩展标准
- 克隆或下载本仓库
- 打开 Chrome 浏览器,访问
chrome://extensions/ - 启用右上角的「开发者模式」
- 点击「加载已解压的扩展程序」
- 选择本项目的根目录
安装后,扩展会自动在所有网页上替换 navigator.credentials API。当网站尝试使用 WebAuthn 进行注册或登录时:
- 扩展会弹出确认窗口,显示操作详情
- 您可以查看 RP ID、用户信息、安全警告等
- 滑动确认或点击拒绝按钮
- 凭证会安全地存储在浏览器本地
点击浏览器工具栏中的扩展图标,打开管理界面:
- 查看凭证:展开凭证卡片查看详细信息
- 删除凭证:点击删除按钮移除不需要的凭证
- 导出凭证:点击导出按钮,将凭证导出为 JSON 格式
- 导入凭证:在导入区域粘贴 JSON 数据,选择冲突策略后导入
在管理界面底部可以配置:
- 何时启用:当浏览器不完全支持某些扩展 API(如
chrome.system.display)时启用 - 区别:兼容模式使用页面内 Shadow DOM 弹窗,而非原生扩展窗口
- 适用场景:基于 Chromium 但 API 支持不完整的浏览器
选择模拟的认证器类型,可选:
- 空值(默认)
- Google Password Manager
- YubiKey 5 系列
- Windows Hello
- Android 平台认证器
- iCloud Keychain passkeys
- 禁用 excludeCredentials 检查:允许重复注册相同凭证
- 禁用 appidExclude 检查:忽略 U2F 兼容性检查
在认证(get)操作时,如果只有单个凭证匹配:
- 可勾选「记住选择,下次自动授权」
- 下次访问该网站时,将跳过确认窗口自动完成认证
- 在管理界面的「自动同意管理」区域可以查看和取消
注意:多凭证场景下此功能会被禁用,以确保用户可以选择具体使用哪个凭证。
| 扩展名 | 操作 | 说明 |
|---|---|---|
credProps |
create | 返回凭证属性(rk=false) |
minPinLength |
create | 返回最小 PIN 长度 |
credBlob |
create | 存储小型数据到凭证 |
getCredBlob |
get | 读取凭证中存储的数据 |
appid |
get | U2F 向后兼容支持 |
appidExclude |
create | U2F 凭证冲突检查 |
页面脚本 (inject.js)
↕ postMessage
内容脚本 (content.js)
↕ chrome.runtime.sendMessage
后台脚本 (background.js) → Service Worker
↓
用户确认弹窗 (popup/popup.html)
页面脚本 (inject-compat.js)
↕ postMessage (仅存储操作)
内容脚本 (content.js)
↓
页面内 Shadow DOM 弹窗
A: 部分浏览器虽然基于 Chromium,但 WebAuthn API 可能存在问题或完全不支持。此扩展提供了软件实现的 WebAuthn,让这些浏览器也能使用 Passkey 等现代认证方式。
A: 凭证存储在 chrome.storage.local 中,仅限扩展访问,其他网页无法读取。但请注意,这不如硬件安全密钥安全,不建议用于高安全性场景。
A: 当您遇到以下错误提示时:
- "当前浏览器不完全支持扩展API,请尝试在设置中开启兼容模式"
- 弹窗无法正常显示
通常在扩展 API 支持不完整的浏览器中需要启用。
A: 可以!使用导出/导入功能:
- 在原浏览器中导出凭证为 JSON
- 在新浏览器中安装扩展
- 导入 JSON 数据
A: 理论上支持所有使用标准 WebAuthn API 的网站,包括但不限于:
- GitHub
- Microsoft
- 各种支持 Passkey 的网站
可以在以下网站测试 WebAuthn 功能:
- Manifest Version: V3
- 最低 Chrome 版本: 93+
- 开发语言: 纯 JavaScript(无构建工具)
- 密码学: Web Crypto API
- 存储: chrome.storage.local
更多技术细节请参考 CLAUDE.md。
欢迎提交 Issue 和 Pull Request!
本项目采用 GPL 许可证。
本扩展仅供学习和研究使用,提供的 WebAuthn 实现为软件模拟,不具备硬件安全密钥的安全性。在生产环境和高安全性场景中,请使用硬件安全密钥或浏览器原生 WebAuthn 支持。