dsh-plugin-ldap-viewer:在 DSH Web UI 中只读查询 LDAP / Active Directory 账号

前言

在 DeepSeek Harness(DSH)里做智能体或本地工具链时,经常要核对目录里的账号状态:是否启用、是否锁定、密码是否要改、账号何时过期。以往多是单独开 LDAP 客户端或写一次性脚本,和 Web UI 的工作流割裂。下面介绍社区插件 dsh-plugin-ldap-viewer(仓库 sijunmanyue/dsh-plugin-ldap-viewer):它在 DSH Web 界面侧栏提供 LDAP Account Viewer,用只读搜索展示账号与状态列,不修改目录。

这是什么

  • 定位:面向 DSH Web UI 的只读 LDAP / Active Directory 账号查看器(README 与 package.json 描述一致)。
  • 维护者:GitHub 用户 sijunmanyue(package.json 中 author 为 JUN MA)。
  • 分类:DSH 插件目录中归为客户端(dsh.client.platform: web,安装后左侧栏出现图标)。
  • 许可证:MIT(见仓库 LICENSE)。

插件以当前 DSH 进程权限运行 HTTP 与 LDAP 连接;安装前宜自行审阅源码与许可证。

核心功能

连接与配置(界面只读,可点 Edit 修改)

连接项在页面上默认只读,点击 Edit 后可改:

  • host、port
  • Base DN、Bind DN
  • bind 密码(保存时留空表示保留当前密码)

非敏感连接项落在本地配置文件;bind 密码走 Harness 凭据服务,页面上只显示是否已配置密码,不展示明文。

查询方式

支持三类固定过滤(非任意拼接 filter),查询值按 RFC 4515 转义:

类型 过滤逻辑(README 原文)
账号 (&(objectClass=user)(sAMAccountName=...))
邮箱 (&(objectClass=user)(|(mail=...)(userPrincipalName=...)))
手机 (&(objectClass=user)(|(mobile=...)(telephoneNumber=...)))

单次查询结果上限 500 条;使用 RFC 2696 分页控件,表格支持每页 10 / 20 / 50 行。

表格列包括:账号、姓名、邮箱、手机、部门,以及分开的状态列:

  • enabled(是否启用)
  • lock state(锁定)
  • account expiry(账号过期)
  • password:valid / expired / must change / never expires / unknown,并带过期时间

状态计算依赖 Active Directory 属性:msDS-UserPasswordExpiryTimeComputed、msDS-User-Account-Control-Computed、pwdLastSet、accountExpires、lockoutTime。

安全边界(README 声明)

  • HTTP 路由仅接受 loopback 请求。
  • 仅只读 LDAP search,不写目录。
  • 结果不包含 userPassword 等敏感属性。
  • 默认 plain LDAP(389);README 写明未配置 LDAPS。

安装与启用

官方说明为先取得仓库目录,再通过 Plugin Manager 或 plugin_manager install_bundle 安装该目录为 DSH bundle。README 示例:

git clone https://github.com/sijunmanyue/dsh-plugin-ldap-viewer.git
plugin_manager install_bundle
  target = <absolute path to this directory>

安装后刷新 Web 页面,左侧栏会出现 LDAP Account Viewer 图标。

社区目录页:https://www.skillhub.cn/plugins/sijunmanyue/dsh-plugin-ldap-viewer(独立站点,与 DeepSeek / 幻方无官方从属关系)。

配置与密码

配置文件路径

非机密连接项保存在:

%DSH_HOME%\ldap-viewer\config.json

未设置 DSH_HOME 时:

%USERPROFILE%\.dsh\ldap-viewer\config.json

凭据与环境变量

  • Bind 密码由 Harness 凭据服务保存,键名为 LDAP_VIEWER_PASSWORD。
  • 若凭据库中无密码,Host 会回退读取环境变量 LDAP_VIEWER_PASSWORD 或 LDAP_PASSWORD。

示例占位值(需在插件配置区替换为真实目录值)

host    = ldap.example.com
port    = 389
baseDn  = DC=example,DC=com
bindDn  = CN=service-account,CN=Users,DC=example,DC=com

典型用法

  1. 在 Web UI 打开 LDAP Account Viewer,确认连接信息;需要变更时点 Edit,填 host/port、Base DN、Bind DN,按需设置 bind 密码。
  2. 在查询表单选择类型(账号 / 邮箱 / 手机),输入条件后搜索。
  3. 在结果表中查看各状态列,用分页切换 10 / 20 / 50 行每页。

仓库内 test/mock-ldap.js 为本地 mock LDAP,供开发验证,不包含在安装 bundle 中(README Files 一节)。

适用场景与注意

适合:已在本地或内网运行 DSH Web UI,需要从 AD/LDAP 快速只读核对账号与密码/锁定/过期状态,且接受 loopback 访问模型的开发者或运维。

注意:

  • 插件以 389 明文 LDAP 为默认,生产环境若要求 LDAPS,需自行评估是否满足策略(README 未提供 LDAPS 配置)。
  • HTTP 仅 loopback,Remote 访问需结合你的 DSH 部署方式理解边界。
  • DSH 生态理念是「一切皆插件」;目录与源码均由社区维护,安装前请检查仓库与 MIT 许可证。

结尾

dsh-plugin-ldap-viewer 把 AD/LDAP 账号的只读检索放进 DSH Web 侧栏,用固定查询类型和分页表格集中展示启用、锁定与过期状态,适合与 Harness 本地开发流并排使用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜