DeepSeek Harness Hub
← 返回列表

极简登录门lt9/dsh-simple-auth

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

用共享密钥登录并隔离会话,仅所有者可分享

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/10 · 已提供中文文档

超轻量级 dsh 登录网关:共享密钥或主/客密钥,ACL 过滤的会话列表,仅所有者可见的共享/取消共享悬浮按钮。

综合分
29.3
GitHub 分
29.3
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add lt9/dsh-simple-auth
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-simple-auth

dsh.pub registry status

DeepSeek Harness Web 的极致轻量登录门。

零生产依赖。一个输入框。可选 master / guest 多把密钥。会话默认隔离;只有 owner 能分享或取消分享;侧栏列表按 ACL 过滤;右下角 分享 FAB 针对当前选中的会话。

目录里已有的登录门偏密码、TOTP、设置卡片。这一款只做共享密钥(或每用户密钥文件)+ 会话 ACL。不要和 dsh-auth-gate、dsh-webui-auth、dsh-web-startup-auth、dsh-auth-gateway 叠装。

English

安装

dsh plugin --profile web add github:lt9/dsh-simple-auth

若 profile 是 pnpm workspace 并报 ERR_PNPM_ADDING_TO_ROOT:

dsh plugin --profile web add -w github:lt9/dsh-simple-auth

本地目录:

dsh plugin --profile web add ./dsh-simple-auth

重启 dsh 之前先配好密钥。门是默认拒绝的:密钥缺失时登录页会说明原因,其它请求一律拒绝。

export DSH_SIMPLE_AUTH_KEY='足够长的随机串'

systemd / Docker 把同一变量写进 Environment / EnvironmentFile。若要复用已经在用的密钥,不要把密钥写进 YAML,只改 keyEnv 指向那个环境变量:

$DSH_HOME/cordis.patch.yml
- id: dsh-simple-auth
config:
keyEnv: EXISTING_SECRET_ENV

重启 dsh web 进程,打开页面,输入密钥即可。

dsh --profile web --dump-config 应能看到名为 dsh-simple-auth 的行。

截图

登录页

访客输入访问密钥进入;可选「在这台设备记住密钥」。

登录页

会话分享(多用户)

右下角分享面板:针对左侧当前选中的会话,owner 可分享给其他用户或取消分享;被分享方双方均可访问,但不能再次分享或取消。

会话分享

要求

- Node.js ≥ 20
- dsh 的 web profile(在 @deepseek-ai/dsh@0.1.1-rc.2 与 @deepseek-ai/dsh@0.1.2-rc.1 上验证;两者仍暴露 webServer.server)
- 使用 dsh plugin add 时,PATH 上需要 pnpm

未登录时的行为

| 入口 | 未登录 | 已登录 |
|---|---|---|
| 页面 GET/HEAD | 302 → /login | 放行 |
| API / 其它方法 | 401 JSON | 放行 |
| WebSocket | 握手 401 | 放行 |
| 脚本 | Authorization: Bearer  或 X-Api-Key | 与会话等价 |

公开路径只有 /login 和 /logout。

配置

全部可选。默认值在代码里合并(home 层 patch 的 config 整段替换,不是深合并)。

| 项 | 默认 | 含义 |
|---|---|---|
| keyEnv | DSH_SIMPLE_AUTH_KEY | 存放密钥的环境变量名 |
| keyFile | "" | 若设置,从该文件读取密钥(去空白),优先于 keyEnv |
| cookieName | dsh_simple_auth | 会话 Cookie 名 |
| sessionTtl | 604800 | Cookie 有效期(秒) |
| cookieSecure | auto | auto 跟随 X-Forwarded-Proto;true / false 强制 Secure |
| rewriteLoopback | true | 已登录请求改写成 127.0.0.1:,避免反代后 dsh 的 Host 围栏对特权 API 返回 403 |
| title | DeepSeek Harness | 登录页标题 |
| hint | 内置中英文案 | 登录页说明 |
| remember | true | 显示「在这台设备记住密钥」(只写 localStorage;服务端仍认 Cookie) |
| rpcMinTimeoutMs | 120000 | 注入到页面的 AbortSignal.timeout 下限。dsh unary RPC 默认 30 秒,大历史页走隧道会报 The user aborted a request。0 关闭注入 |

不要把密钥写进 YAML 或 git。

多用户与会话分享(0.2+)

配置 usersFile 后进入多用户模式:登录页仍只填一把密钥,每把密钥绑定 id + name。Cookie 签 userId(独立 secret 文件),不再用登录密钥签名。

// $DSH_HOME/simple-auth/users.json(0600)
[
{ "id": "master", "name": "master", "keyEnv": "LLAMA_API_KEY" },
{ "id": "guest", "name": "guest", "keyFile": "/path/to/guest-key" },
{ "id": "guest2", "name": "访客乙", "keyFile": "/path/to/guest2-key" }
]

users.json 是数组,可配置任意多个访客。每个用户独立 id、name 和密钥(key / keyFile / keyEnv)。

- 默认会话隔离:session.list / WebSocket 事件按 ACL 过滤
- 当前会话以 DSH RPC 信封里的 payload.sessionId 为准(session.history / session.prompt 等),标题来自官方 session.list,不解析会话日志
- 分享后双方共用同一 sessionId;session.prompt / session.updateQueue 互斥(第二人 409 session-busy)
- 仅会话 owner 可分享或取消分享;被分享方只能访问,不能管理分享关系
- 归档等破坏性操作仅 owner
- 页面右下角注入分享面板(见上方截图);也可调 POST /simple-auth/share、/simple-auth/unshare

| 项 | 默认 | 含义 |
|---|---|---|
| usersFile | "" | 多用户 JSON;非空且有效时启用多用户 |
| aclFile | $DSH_HOME/simple-auth/acl.json | 会话 owner / sharedWith |
| secretFile | $DSH_HOME/simple-auth/secret | Cookie HMAC 密钥(自动生成) |
| legacyOwner | master | 升级时未登记 owner 的存量会话归此用户 |

已知限制

- 分享会话等于分享能跑命令的 agent,不只是聊天文本。llama 凭据、bash、workspace、settings 仍是整机共享。
- 这是访问控制,不是 TLS 或「agent 等于远程代码执行」的替代品。
- 目录上架(若已列出)不等于安全审计。

停用 / 卸载

dsh plugin --profile web remove dsh-simple-auth

然后重启 dsh web 进程。若只想暂时关掉而不卸载,去掉 usersFile / keyEnv / keyFile——门会关死。

安全

- 配置缺失时关死,不会把界面裸奔出去。
- 登录按客户端 IP 限速(仅当对端是回环时才信任 X-Forwarded-For)。
- 会话用访问密钥做 HMAC 签名(无状态)。轮换密钥会使全部 Cookie 失效。
- 已登录的 JSON /api 若是历史页,会丢掉已闭合消息的 assistant/chunk(dsh #4678),避免浏览器拉十几 MB 的冗余增量。
- 公网请走 HTTPS,并保持 cookieSecure: auto。
- 走隧道时,把浏览器地址栏的主机也交给 dsh:--trusted-host 你的域名或IP:端口(可重复)。本插件登录后会把 Host/Origin 改写成回环;CLI 参数是官方文档里的备用围栏。

开发

node --test

生产依赖为零。Host 半区包裹 webServer.server 的 request / upgrade 监听器,因此静态资源、/api 和 socket 都会经过这扇门。0.1.2 的 Web 面额外有一层浏览器会话 Cookie(connection.authorizeIndex);本插件在自家登录 Cookie 已通过后会跳过这层 401,这样无需进程启动 token 也能打开 SPA。0.1.1 没有这层围栏,行为不变。

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群