前言¶
DeepSeek Harness (DSH) 采用插件化架构,Web UI 默认未内置认证机制。若直接将 Web UI 暴露在局域网或公网,存在安全风险。dsh-auth-gate 插件在 DSH Web UI 前置了一道登录门禁,提供 SVG 图形验证码与防暴力破解能力,并通过 Nginx auth_request 接口实现强制校验。
插件简介¶
- 名称:dsh-auth-gate
- 定位:DSH Web UI 的认证门禁插件,提供 SVG 图形验证码与防暴力破解保护。
- 所有者:jiang539
- 类别:admin-security
核心功能¶
- SVG 图形验证码:一次性使用,自动剔除易混淆字符,支持按 IP 限流。
- 防暴力破解:支持按 IP 和按账号双维度限流。同一 IP 连续失败达到阈值锁定 IP;任一账号凭据连续失败达到阈值锁定该账号(IP 轮换无效)。
- 会话管理:支持滑动过期机制,Token 在每次校验时顺延有效期。
- 会话绑定 IP(可选):将 Token 绑定登录时的客户端 IP,在其他 IP 使用时立即失效。
- 单点登录:同一账号同时只允许一个会话,新登录会使旧会话失效。
- 密码安全:使用 bcrypt 哈希存储(权限 0600),密码文件仅限所有者读写。
- Nginx auth_request 支持:通过 Nginx 层前置认证,未登录请求在到达 DSH 前被拦截。
安装与启用¶
通过插件管理命令安装:
dsh plugin --profile web add dsh-auth-gate
插件安装后,DSH 启动时会自动注册 /auth/* 路由。DSH 默认只监听 127.0.0.1,需通过 Nginx 等反向代理前置访问。
注意:默认凭据为公开值(账号 admin,密码 admin123),首次登录必须强制修改账号名与密码。
典型用法¶
插件提供标准的 /auth API 接口,可配合 curl 或 Nginx 使用:
# 获取验证码
curl http://127.0.0.1:3080/auth/captcha
# 登录
curl -X POST http://127.0.0.1:3080/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"your-password","captcha":"abcd","uuid":"<uuid>"}'
# 校验 Token
curl -H "Authorization: Bearer <token>" http://127.0.0.1:3080/auth/verify
安全与注意事项¶
- 默认凭据:首次登录前使用默认账号
admin/admin123,登录后必须修改。 - 本地监听:DSH Web UI 仅监听
127.0.0.1,务必通过 Nginx 的auth_request进行前置认证,否则插件无法拦截请求。 - 权限管理:密码文件权限严格限制为
0600。 - 开发环境:
devCaptchaText配置项仅限开发环境使用,生产环境不可开启。 - 网络传输:局域网 HTTP 部署不安全,建议公网部署使用 HTTPS。
总结¶
dsh-auth-gate 为 DSH Web UI 提供了完整的认证与防护能力,适合需要在公网或不可信网络中部署 DeepSeek Harness 的场景。通过 Nginx auth_request 与插件自身的防暴力破解机制,可以有效降低安全风险。