awol2005ex3/dsh-user-manager ↗★ 0
dsh-user-manager
DSH 用户管理与会话隔离插件,支持数据库或 LDAP 认证,提供登录网关、API 级授权及管理员控制台。
AI 分析
核心用途是为 DSH 提供企业级或多用户环境下的安全准入与数据隔离。适合私有化部署、团队共享服务器的系统管理员。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:awol2005ex3/dsh-user-manager说明文档
阅读完整 README ↗profile 配置
cordis.patch.yml 已把插件行插入配置树,无需再写一遍。可选的完整配置:
- insert:
- id: user-manager
name: dsh-user-manager
config:
mode: database # database | ldap
database:
engine: sqlite # sqlite | mysql | postgres
filename: dsh-users.sqlite
# database: # mysql / postgres 用这一组
# engine: postgres
# host: 10.0.0.5
# port: 5432
# database: dsh
# user: dsh
# password: secret
# ssl: true
auth:
sessionTtlSeconds: 43200
cookieName: dsh_user
cookieSameSite: lax
scryptCost: 16384
unownedSessions: admin # admin | everyone | none
enforce: true # 关掉则只做用户管理,不隔离会话
LDAP 模式:
config:
mode: ldap
ldap:
url: ldaps://dc.example.com:636
bindDn: CN=svc-dsh,OU=Service,DC=example,DC=com
bindPassword: secret
searchBase: OU=Users,DC=example,DC=com
searchFilter: (sAMAccountName={username}) # OpenLDAP 常用 (uid={username})
displayNameAttribute: displayName
adminDns:
- CN=Alice,OU=Users,DC=example,DC=com
tlsRejectUnauthorized: true
timeoutMs: 10000
配置项说明:
| 配置 | 默认 | 说明 |
|---|---|---|
mode | database | 用户来源 |
auth.sessionTtlSeconds | 43200 | 登录态有效期(秒) |
auth.cookieName | dsh_user | Cookie 名 |
auth.cookieSameSite | lax | Cookie 的 SameSite |
auth.scryptCost | 16384 | 口令哈希的 scrypt cost(2 的幂) |
auth.unownedSessions | admin | 启用前就存在的历史会话归谁可见:admin / everyone / none |
auth.adminOnlyMethods | [] | 追加"仅管理员可调用"的 /api 方法 |
enforce | true | 是否启用会话隔离 |
使用
- 启动 harness,浏览器打开 Web 界面 —— 未登录时会看到登录遮罩。
- 用环境变量里的管理员账号登录。
- 管理员会在侧边栏底部看到「👥 用户」入口(找不到插槽时回退为左下角浮动按钮),
打开后是多页面面板,顶部导航切换:
- 用户列表:表格 + 行内操作(设为管理/普通、启用/停用、删除);
- 新建用户:独立表单页,创建后自动刷新列表;
- 用户库配置:切换模式(数据库 / LDAP),填写连接信息后测试连接再保存并切换;
- 我的密码:修改本人登录口令。
- 普通用户登录后也会挂载面板,但只显示「我的密码」页(入口名「🔑 账户」),看不到用户管理。
- 所有登录用户只能看到自己创建的会话。
连接配置(含数据库口令)保存在 $DSH_HOME/user-manager.yaml,与会话归属索引同文件。
该文件含明文口令,注意权限。