dsh-auth
Cookie authentication and IPv4 binding for the DeepSeek Harness Web UI
AI Analysis
核心用途是为 DSH Web 界面提供安全登录认证与局域网/远程 IPv4 绑定。适合需要远程访问 DSH 并保障访问安全的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:radaren/dsh-authREADME
Read the full README ↗使用
本机访问:
dsh web
打开命令打印的 URL。若 ~/.dsh/token 原先不存在,插件会自动创建。登录 token 可从该文件读取:
cat ~/.dsh/token
DSH_HOME 自定义时,token 位于对应目录的 token 文件。
绑定远程 IPv4
绑定所有 IPv4 网卡:
DSH_AUTH_HOST=0.0.0.0 dsh web
当前 Harness rc.6 的内置 Web 启动参数会主动拒绝 --host 0.0.0.0,所以该地址必须通过 DSH_AUTH_HOST 提供。指定某张网卡也可以:
DSH_AUTH_HOST=192.168.1.20 dsh web
随后访问 http://192.168.1.20:3080。host 必须是 IPv4 字面量,不接受主机名。
浏览器不会在非回环的明文 HTTP 来源暴露 crypto.randomUUID(),但 Harness
客户端会直接调用它。认证宿主会在客户端 bundle 之前注入一个基于
crypto.getRandomValues() 的 UUID v4 兼容实现;原生方法存在时不会覆盖。
这只修复 API 兼容性,不会把 HTTP 变成安全上下文,也不替代 HTTPS。
HTTPS 与 Secure Cookie
直接绑定 LAN 时仍是明文 HTTP,token 会随 Cookie 在网络中传输。跨不可信网络使用时,应让 dsh 只绑定回环地址,并在前方配置 HTTPS 反向代理。HTTPS 已就绪后再启用:
DSH_AUTH_SECURE_COOKIE=true dsh web
不要在直接访问 http://... 时开启它;浏览器不会回传带 Secure 的 Cookie。
配置
bundle 暴露以下环境变量:
| 变量 | 默认值 | 说明 |
|---|---|---|
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 中完整重述配置。Harness patch 会整体替换 config,不会逐键深度合并:
- 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
authorizeRemoteApi: true 表示:Cookie 已通过恒定时间比较后,把 /api 请求交给 Harness 时按本机可信请求处理。这替代了上游在“尚无真实认证”情况下对设置与凭据方法保留的 loopback-only 占位栅栏。关闭该项会保留上游限制,远程登录者将无法使用部分管理功能。