# uds-auth DeepSeek Harness 的 UDS 统一认证插件:右上角登录徽章 + 设置页用户管理。 ## 安装 ```bash 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` 中修改: ```yaml 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](docs/skill-auth-standard.zh.md) 2. **公共 skill 说明**:[docs/uds-skill-auth.zh.md](docs/uds-skill-auth.zh.md) 3. **公共 skill 本体**:[skills/uds-skill-auth/](skills/uds-skill-auth/)(随插件提交) 现场:装插件 → 把 `skills/uds-skill-auth` 配进 skills 路径 → 扫码 → 再装业务 skill。 可配置:`retainSkillCredentialsOnLogout`(默认 true)、`skillCredentialTtlSeconds`、`outboundAllowedHosts`。 ## License MIT