前言¶
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 與插件自身的防暴力破解機制,可以有效降低安全風險。