Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

NativeStar/WebAuthCompat

Open more actions menu

Repository files navigation

WebAuthn Compat

项目99%使用Vibe Coding 用于在部分支持扩展但不兼容WebAuthn的浏览器中提供polyfill

当然如果你不介意安全性且追求方便 在正常支持该API的浏览器上装也完全可行(比如用自动授权)

如果出现问题去设置里开启兼容模式后刷新网页再试(Chromium 137及以上应该是不用的 如KiwiBrowser)

已在KiwiBrowser 狐猴浏览器 雨见浏览器上测试通过(后面两个要打开兼容模式)

至于安全性...当没有就好 至少能用了吧(雾)

以下是AI写的

WebAuthn Compat 是一个 Chrome 浏览器扩展,为不支持或 WebAuthn 工作异常的浏览器提供 WebAuthn API 的兼容性支持。

项目特点

  • 完整的 WebAuthn 支持:实现 navigator.credentials.create()get() API
  • 多算法支持:ES256、ES384、RS256、PS256
  • 双模式架构:标准模式和兼容模式,适应不同浏览器环境
  • 安全检查:rpId 验证、iframe 检测等安全警告
  • 凭证管理:完整的凭证管理界面,支持导入导出
  • 自动同意:可配置的自动授权功能
  • Conditional UI:支持密码管理器自动填充场景
  • Manifest V3:使用最新的扩展标准

安装

从源码安装

  1. 克隆或下载本仓库
  2. 打开 Chrome 浏览器,访问 chrome://extensions/
  3. 启用右上角的「开发者模式」
  4. 点击「加载已解压的扩展程序」
  5. 选择本项目的根目录

使用说明

基础使用

安装后,扩展会自动在所有网页上替换 navigator.credentials API。当网站尝试使用 WebAuthn 进行注册或登录时:

  1. 扩展会弹出确认窗口,显示操作详情
  2. 您可以查看 RP ID、用户信息、安全警告等
  3. 滑动确认或点击拒绝按钮
  4. 凭证会安全地存储在浏览器本地

凭证管理

点击浏览器工具栏中的扩展图标,打开管理界面:

  • 查看凭证:展开凭证卡片查看详细信息
  • 删除凭证:点击删除按钮移除不需要的凭证
  • 导出凭证:点击导出按钮,将凭证导出为 JSON 格式
  • 导入凭证:在导入区域粘贴 JSON 数据,选择冲突策略后导入

全局设置

在管理界面底部可以配置:

兼容模式

  • 何时启用:当浏览器不完全支持某些扩展 API(如 chrome.system.display)时启用
  • 区别:兼容模式使用页面内 Shadow DOM 弹窗,而非原生扩展窗口
  • 适用场景:基于 Chromium 但 API 支持不完整的浏览器

AAGUID 配置

选择模拟的认证器类型,可选:

  • 空值(默认)
  • Google Password Manager
  • YubiKey 5 系列
  • Windows Hello
  • Android 平台认证器
  • iCloud Keychain passkeys

安全设置

  • 禁用 excludeCredentials 检查:允许重复注册相同凭证
  • 禁用 appidExclude 检查:忽略 U2F 兼容性检查

自动同意功能

在认证(get)操作时,如果只有单个凭证匹配:

  • 可勾选「记住选择,下次自动授权」
  • 下次访问该网站时,将跳过确认窗口自动完成认证
  • 在管理界面的「自动同意管理」区域可以查看和取消

注意:多凭证场景下此功能会被禁用,以确保用户可以选择具体使用哪个凭证。

支持的 WebAuthn 扩展

扩展名 操作 说明
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 弹窗

常见问题

Q: 为什么需要这个扩展?

A: 部分浏览器虽然基于 Chromium,但 WebAuthn API 可能存在问题或完全不支持。此扩展提供了软件实现的 WebAuthn,让这些浏览器也能使用 Passkey 等现代认证方式。

Q: 凭证安全吗?

A: 凭证存储在 chrome.storage.local 中,仅限扩展访问,其他网页无法读取。但请注意,这不如硬件安全密钥安全,不建议用于高安全性场景。

Q: 什么时候应该启用兼容模式?

A: 当您遇到以下错误提示时:

  • "当前浏览器不完全支持扩展API,请尝试在设置中开启兼容模式"
  • 弹窗无法正常显示

通常在扩展 API 支持不完整的浏览器中需要启用。

Q: 可以在多个浏览器之间共享凭证吗?

A: 可以!使用导出/导入功能:

  1. 在原浏览器中导出凭证为 JSON
  2. 在新浏览器中安装扩展
  3. 导入 JSON 数据

Q: 支持哪些网站?

A: 理论上支持所有使用标准 WebAuthn API 的网站,包括但不限于:

  • GitHub
  • Google
  • Microsoft
  • 各种支持 Passkey 的网站

测试

可以在以下网站测试 WebAuthn 功能:

技术细节

  • Manifest Version: V3
  • 最低 Chrome 版本: 93+
  • 开发语言: 纯 JavaScript(无构建工具)
  • 密码学: Web Crypto API
  • 存储: chrome.storage.local

更多技术细节请参考 CLAUDE.md

贡献

欢迎提交 Issue 和 Pull Request!

许可证

本项目采用 GPL 许可证。

声明

本扩展仅供学习和研究使用,提供的 WebAuthn 实现为软件模拟,不具备硬件安全密钥的安全性。在生产环境和高安全性场景中,请使用硬件安全密钥或浏览器原生 WebAuthn 支持。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.