前言¶
DeepSeek Harness 的 Web UI 在 0.1.0-rc.6 版本中仅提供具名 route、upgrade route 和一个 SPA fallback,缺少 HTTP middleware。旁挂一个 /login route 无法保护已有的 /api、静态管理端或 WebSocket。dsh-auth 以 bundle 的形式禁用内置 webserver,并插入一个提供相同服务面的认证宿主,在不修改现有 connection、modules、HMR 与 frontend-static 的情况下为 Web UI 提供鉴权能力。
是什么¶
dsh-auth 是面向 DeepSeek Harness Web UI 的 Cookie 鉴权 bundle。该项目由 radaren 维护,遵循 MIT 许可证。它不读取或复用 ~/.dsh/.credentials.yaml 中的模型 API 密钥。
安装与启用¶
使用 tarball 安装插件:
dsh plugin --profile web add ./dsh-auth-0.1.0.tgz
验证组合层是否生效:
dsh web --dump-config
输出中应同时看到禁用的 webserver 和新增的 auth-webserver。
核心功能¶
该插件提供以下能力:
- 地址绑定:支持绑定回环、
0.0.0.0或指定 IPv4 地址。 - Token 管理:从
$DSH_HOME/token(默认~/.dsh/token)读取专用访问 token;若 token 不存在,会生成 32 字节随机值并以0600权限保存。 - 登录与 Cookie:内置
/auth/login登录页,成功后写入HttpOnly; SameSite=StrictCookie。 - 路由保护:统一保护 SPA、HTTP API 和 WebSocket upgrade。
- 远程 API:登录后开放 Harness 的远程管理 API,并在交给下游前移除 auth Cookie。
- 兼容层:为明文 LAN 来源补充基于
crypto.getRandomValues()的 UUID v4 兼容实现。 - 生命周期:提供退出登录与全局 token 轮换功能。
使用示例¶
本机访问:
dsh web
打开命令行打印的 URL。若 ~/.dsh/token 原先不存在,插件会自动创建。登录 token 可从该文件读取:
cat ~/.dsh/token
绑定远程 IPv4 地址:
DSH_AUTH_HOST=0.0.0.0 dsh web
或指定特定网卡:
DSH_AUTH_HOST=192.168.1.20 dsh web
随后访问对应地址。注意 host 必须是 IPv4 字面量,不接受主机名。
启用 HTTPS 的 Secure Cookie:
DSH_AUTH_SECURE_COOKIE=true dsh web
配置¶
插件通过环境变量控制行为:
| 变量 | 默认值 | 说明 |
|---|---|---|
DSH_AUTH_HOST |
127.0.0.1 |
IPv4 监听地址,优先于 dsh web --host |
DSH_AUTH_TOKEN_FILE |
$DSH_HOME/token |
专用 token 文件路径 |
DSH_AUTH_SECURE_COOKIE |
false |
只有精确值 true 才添加 Secure 标志 |
如需修改其他字段,可在 $DSH_HOME/profiles/web/cordis.patch.yml 中完整重述配置。示例:
- id: auth-webserver
config:
host: 127.0.0.1
port: 3080
tokenFile: !!js dshHomePath('token')
cookieName: dsh_auth
cookieMaxAgeSeconds: 2592000
secureCookie: false
authPath: /auth
apiPath: /api
authorizeRemoteApi: true
maxLoginBodyBytes: 4096
protectTokenFile: true
注意事项¶
- 单一 token:该插件不提供多用户、权限分级或审计系统。
- TLS 处理:插件不终止 TLS;公网使用必须配置 HTTPS 反向代理和网络访问控制。
- 权限风险:DeepSeek Harness 本身可执行命令和修改文件,应仅将其暴露给受信任的网络环境。
- Cookie 限制:直接访问
http://...时开启Secure Cookie会失败。 - 地址限制:
host参数必须是 IPv4 字面量,不接受主机名。
结语¶
dsh-auth 通过引入 Cookie 鉴权层,解决了 DeepSeek Harness Web UI 在 0.1.0-rc.6 版本中缺乏中间件保护的问题。它不依赖模型 API 密钥,而是通过本地 Token 文件进行控制,适合需要独立鉴权场景的本地开发或内网部署。
项目主页:https://github.com/radaren/dsh-auth
社区目录:https://www.skillhub.cn/plugins/radaren/dsh-auth