前言¶
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