Skip to content

移除 OAuth 与第三方身份绑定,改用本地公私钥 - #238

Merged
LIghtJUNction merged 3 commits into
mainfrom
refactor/key-only-identity-20261011
Oct 11, 2026
Merged

LIghtJUNction merged 3 commits into
mainfrom
refactor/key-only-identity-20261011

Conversation

@LIghtJUNction

Copy link
Copy Markdown
Contributor

目标

按用户要求,身份以本地公私钥为基础,不绑定第三方身份。不引入区块链、外部钱包或交易费用。

改动

  • 移除第三方登录提供方、AgentID、邮件登录、浏览器 Passkey 登录及 MSG OAuth/OIDC 授权服务。共删除 19 个旧登录生产模块。
  • 浏览器通过一次性码发起请求,必须由原账号的本地签名私钥批准。默认一小时会话,不发刷新令牌,不上传私钥。
  • 关闭旧端点和旧操作。拒绝恢复到数据库中的旧 OAuth 凭据,不降级成普通 token。
  • 删除旧登录绑定及 OAuth 状态,只迁移原生 API 凭据来源限制。保留账号、内容、公钥、权限和历史密钥资料。
  • 保留标准 Git 客户端的原生受限凭据;Basic 只在专用 Git 路径使用,不用于网页或 MCP 登录。
  • 保留五个不可调用的旧操作声明以核验历史证书,不改写已签署证书字节。
  • 更新 CLI、网页、MCP、部署配置、示例和升级文档,移除无调用方的登录邮件模块及相关依赖。

139 个文件变更,新增 2380 行,删除 10679 行,净减少 8299 行。验证辅助文件只在隔离 CI 分支,不进入本 PR。

已执行的验证

提交:d570d2f074615107fc3f54ef03d9923a2a80244c
基础:705b44f0f9583a644fbfaf974635be5ca65b4fca
测试与交付共用源码树:61cf6b7799080d9d126b1f07fa55a74c66bbbe20

  • 本次相关 49 个后端测试文件,583 个不重复用例,最终全部通过,无失败、错误或跳过。
  • JavaScript 全部 292 项通过,无失败或跳过。
  • Ruff 检查、格式检查、Python 编译检查、锁定依赖检查和源码包/轮子构建通过。
  • 全量测试收集 4594 项。没有声称运行了全部 4594 项。

最终验收与证据;分组原始结果。

分组首次结果为 582 通过、1 失败。唯一失败是配置测试调用的系统总自检。按仓库原有 CI 补齐 bubblewrap/AppArmor 等系统工具后,对整个配置契约文件复测 19 项全部通过。产品源码未改动,未删除断言或跳过该项。最终报告保留原始失败,并以相同源码的复测结果替换同名用例,不重复计数。最终流水线核对三组源码树、测试文件覆盖、全部最新结果后才允许推送此分支。

升级前置条件

尚未合并、尚未部署。此 PR 保持草稿,避免在旧用户尚未准备好密钥时直接发布。

这是身份协议的不兼容升级。仍依赖第三方登录的旧用户,必须先在旧版本中通过既有恢复或托管转自持流程取得可用的原身份密钥,并实际验证签名与备份。不能凭邮箱或提供方声明接管旧账号。

本次保留历史托管资料、原生 API/任务委派和恢复机制,不自动将所有旧托管身份转为自持,也不销毁用户资料。

部署者须删除旧 [oauth] / [login] 配置,配置 HTTPS 与 [browser],更新独立托管只读数据库角色对 credential_states 的查询权限。完整步骤见 docs/KEY_IDENTITY.md。旧 OAuth 私有 MCP 连接器不会继续保持连接,须改用 CLI 或原生签名请求。

github-actions Bot and others added 2 commits October 11, 2026 17:20
Remove third-party account binding and OAuth authority; preserve native signing, bounded browser sessions, Git credentials, legacy certificates, content and atomic upgrade/recovery.
@LIghtJUNction
LIghtJUNction marked this pull request as ready for review October 11, 2026 17:38
Copilot AI balanced review requested due to automatic review settings October 11, 2026 17:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@LIghtJUNction
LIghtJUNction merged commit fab1772 into main Oct 11, 2026
25 of 29 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review ✅ Completed 2026-10-11T17:46:05.185776Z a52cfdd Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copy link
Copy Markdown
Contributor Author

核对 main f0249a6d742f8674f5aeb6285494e6342fbdee1f 的完整 Rewrite contracts:目前有 3 个失败、1 个 fixture 错误;相同四项在本 PR 合并提交 fab1772f 的 run 38160930701 中已出现,和后续 ASCII 布局改动无关。

三项 HTTP/nginx 测试仍假设 Authorization 请求返回 200/400,但新的 BrowserSessionBoundary 明确返回 401/signature_required;另一个跨站 fixture在 http://peer.test 默认启用 browser,被 load_browser 以 secure_channel_required 拒绝。

建议同步这四处身份/安全 origin 契约,保留 no-store、无日志/响应哨兵泄露、URL 拒绝和无业务写入断言。Authorization 拒绝测试与 URL 边界矩阵应分开,避免所有请求提前被 401 拦截后丢失覆盖。不要恢复 OAuth 或放宽生产 HTTPS 检查。修复后需在最终 SHA 重跑完整 Rewrite contracts;本条是日志与源码核对,未新增执行测试或部署。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants