oclaw/uds-auth/README.zh.md
oliver fa4d5d6d97
Some checks are pending
ci / test (push) Waiting to run
ci / test-postgresql (push) Waiting to run
fix(uds-auth): isolate trusted Host calls from browser identity
2026-10-11 17:03:40 +08:00

3.8 KiB
Raw Blame History

uds-auth

DeepSeek Harness 的 UDS 统一认证插件:右上角登录徽章 + 设置页用户管理。

安装

dsh plugin --profile web add -w "D:/project/chatgpt/oclaw/uds-auth"

安装后重启 Harness。登录徽章在 shell.overlay(右上角);用户管理/部署配置在 设置 → UDS 认证(settings.section)。

0.2.21 提供仅供 Host 插件使用的 ctx.get('udsAuth').runAsHost(callback):在回调及其异步操作内使用 Host 后台上下文,并恢复调用者的网页身份。配合 dsh-im-ops >= 4.9.1-ops.38 修复 WhatsApp 后台建会话误报“登录后才能创建会话”;更新两者后重启 Host。该方法不增加远程端点,网页登录及工作区 ACL 保持生效。

配置

在 设置 → UDS 认证 或 cordis.patch.yml 中修改:

uacBaseUrl: https://uac.zte.com.cn
userSearchUrl: https://icenterapi.zte.com.cn/zte-km-icenter-addresearch/user/plain/docs/search
loginSystemCode: '100000455558'
originSystemCode: ''

标准 DSH 插件结构

部分 路径 说明
Host lib/index.js Cordis apply:HTTP /uds-auth/*、可选 schema 设置
Client lib/client.js 右上角登录 + 设置页用户管理
Bundle cordis.patch.yml insert 插件层(不含 client.entry)
Meta package.json → dsh.client exports["./client"] + slots inject

API

  • POST /uds-auth/qr-start — 服务端生成扫码挑战
  • GET /uds-auth/qr?data= — 二维码 SVG
  • POST /uds-auth/qr-proxy — 代理 UAC 扫码校验
  • GET /uds-auth/api/me — 当前用户
  • POST /uds-auth/api/logout — 登出(UI 会话;skill 凭证是否保留见配置)
  • GET|POST /uds-auth/agent-credentials — loopback:按 DSH_SESSION_ID 取 skill 用 empNo+token
  • POST /uds-auth/outbound — loopback:白名单出站并注入鉴权头
  • 用户管理 / 兜底管理员:见 /uds-auth/api/users*、/uds-auth/api/fallback/*
  • 默认兜底账号(扫码不可用时):用户名 administrator,密码 Admin@123(首次启动自动启用;可在设置中改密或关闭)
  • 本机密钥解锁(可选,解密才登录):
    1. 生成密封盒:node scripts/seal-local-admin.mjs "你的口令"
    2. 把输出的 UDS_AUTH_LOCAL_ADMIN_BOX=... 设到 Harness 进程环境(这是密文,不是口令)
    3. 登录面板 →「本机密钥解锁」→ 输入口令;必须解密成功才有 admin
      仅设置环境变量、不知道口令 → 无法登录。旧变量 UDS_AUTH_LOCAL_ADMIN_KEY 已忽略。
  • ACL / 侧栏:未登录与普通用户看不到设置齿轮;仅超管/应急可见设置。admin 无设置齿轮,但可看渠道/系统会话。super_admin / 兜底默认可见全部会话(可关)。布局:设置在左、登录在右。

Desktop 离线 tgz(无 npm 外网)

≥0.2.20:qrcode 已打进 lib/qrcode-bundled.cjs,dependencies 为空。
打包机:npm pack(会跑 prepack 重打 bundle)。现场 Desktop「添加插件」填 绝对路径 D:\…\uds-auth-0.2.20.tgz,装包日志不应再出现 registry.npmjs.org/qrcode。

Skill 认证(给他人改造 skill 时)

发整个 uds-auth 插件 即可,内含:

  1. 标准:docs/skill-auth-standard.zh.md
  2. 公共 skill 说明:docs/uds-skill-auth.zh.md
  3. 公共 skill 本体:skills/uds-skill-auth/(随插件提交)

现场:装插件 → 把 skills/uds-skill-auth 配进 skills 路径 → 扫码 → 再装业务 skill。

可配置:retainSkillCredentialsOnLogout(默认 true)、skillCredentialTtlSeconds、outboundAllowedHosts。

License

MIT