Skip to content

✨ 实现最小可用客户端管理系统 - #1

Merged
UE-DND merged 4 commits into
masterfrom
codex/oidc-client-management
Jul 13, 2026
Merged

✨ 实现最小可用客户端管理系统#1
UE-DND merged 4 commits into
masterfrom
codex/oidc-client-management

Conversation

@UE-DND

@UE-DND UE-DND commented Jul 13, 2026

Copy link
Copy Markdown
Member

变更概述

将 OIDC 客户端配置从手工维护 JSON 升级为数据库驱动的最小可用客户端管理系统,并保持现有 Authorization Code + PKCE 流程兼容。

  • 数据库成为运行时客户端配置的主要数据源
  • oidc-clients.json 仅在客户端表为空时尝试事务化初始化;缺失或空文件可从零客户端启动
  • 增加客户端所有权、审核状态、乐观锁版本、管理会话和审计日志
  • 增加受登录保护的客户端 CRUD、停用、草稿重提及管理员审核 API
  • 服务端生成 Web 客户端 ID 和一次性 Secret;SPA 不生成 Secret
  • 增加 React + Vite 同源管理控制台
  • 增加管理员白名单、CSRF、Origin 校验、创建配额/限流和动态 CSP 来源缓存

数据库影响

这是面向全新部署的 schema 变更,不提供旧版 oidc_clients 数据回填。发现旧表缺少新字段时会给出明确的不兼容启动错误,不会自动删表或破坏性重建。

扩展 oidc_clients,新增 draft 状态和 rejection_reason;同时新增 management_sessionsoidc_client_audit_logs 及相关索引。

安全与状态设计

  • 客户端类型创建后不可修改,避免 Web/SPA 切换破坏 Secret 语义
  • Active 客户端仅允许修改名称和描述;Redirect URI、Post Logout URI、scope 变更需创建新客户端,不会因待审配置中断生产流量
  • Rejected 客户端修改后进入 Draft,通过显式 submit 重新进入 Pending,并返回最近拒绝原因
  • 后端强制 scopeWhitelist 包含 openid
  • 普通主体默认最多 10 个非停用客户端、5 个 Pending;创建按 Subject 和 IP 限流,管理员配额豁免可配置
  • Web Secret 使用 32 字节随机值,仅在创建响应返回一次;数据库只保存 scrypt 摘要
  • 管理会话数据库只保存 token 的 SHA-256 摘要
  • 所有变更接口校验会话绑定 CSRF token 和同源 Origin
  • 普通用户只能管理自己的客户端;越权详情统一返回 404
  • Draft、Pending、Rejected、Disabled 客户端不会被 OIDC Adapter 暴露
  • 审计日志不记录 Secret、摘要或完整请求体
  • liveness 路由不依赖动态 CSP 的数据库查询

提交拆分

  1. ✨ 实现客户端管理后端与数据库
  2. 💄 增加客户端管理控制台
  3. ✅ 补充客户端管理回归测试
  4. 📝 更新客户端管理部署文档

验证

  • pnpm lint
  • pnpm test:服务端 136/136,UI 2/2
  • pnpm build
  • git diff --check
  • Docker 构建已加入 GitHub Actions;本机 Docker daemon 未运行,交由 CI 验证

暂不包含

完整客户端 Revision 表与 Active Revision 原子切换、Dynamic Client Registration、Native、M2M、使用统计、域名验证、组织系统、Secret 重置/轮换、双 Secret 和 Disabled 客户端恢复。

@UE-DND
UE-DND force-pushed the codex/oidc-client-management branch from 70a1911 to ddb9709 Compare July 13, 2026 07:33
@UE-DND UE-DND changed the title ✨ 实现第一轮 OIDC 客户端管理 ✨ 实现最小可用客户端管理系统 Jul 13, 2026
@UE-DND
UE-DND force-pushed the codex/oidc-client-management branch from ddb9709 to 98e9396 Compare July 13, 2026 07:48
@UE-DND
UE-DND marked this pull request as ready for review July 13, 2026 07:50
@UE-DND
UE-DND merged commit be46f69 into master Jul 13, 2026
1 check passed
@UE-DND
UE-DND deleted the codex/oidc-client-management branch July 13, 2026 14:03
UE-DND added a commit that referenced this pull request Aug 18, 2026
UE-DND added a commit that referenced this pull request Aug 18, 2026
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.

1 participant