给 Web 界面加飞书登录,未授权者一律拒之门外
29.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jianghuifr/dsh-feishu-auth该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 发起网络请求lib/index.js:96
const anonymous = await fetch(probeUrl, { headers: probeHeaders, redirect: 'manual' }); - 发起网络请求lib/index.js:110
const authenticated = await fetch(probeUrl, { - 读取密钥环境变量lib/config.js:44
const appSecret = readNonEmptyString(source.appSecret) ?? readNonEmptyString(process.env.FEISHU_APP_SECRET) ?? ''; - 读取本地文件lib/session.js:189
const existing = readFileSync(file, 'utf8').trim(); - 写入本地文件lib/session.js:196
mkdirSync(dirname(file), { recursive: true, mode: 0o700 }); - 写入本地文件lib/session.js:198
writeFileSync(temporary, `${encodeBase64Url(secret)}\n`, { mode: 0o600 }); - 写入本地文件lib/session.js:199
renameSync(temporary, file); - 写入本地文件lib/session.js:201
chmodSync(file, 0o600);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 飞书OAuth登录门禁
- 签名会话cookie校验
- 未授权请求拦截
飞书(Lark)OAuth 登录门禁,为 DeepSeek Harness 网页 GUI 的每个 HTTP 请求加上签名会话 cookie。
README
由 DeepSeek 最新模型翻译生成@jianghuifr/dsh-feishu-auth
给 DeepSeek Harness(dsh)的 Web 界面加一道飞书登录:没通过飞书登录,首页、静态资源、/api 全拿不到。
为什么需要它
DSH 本身没有服务器级认证。把 Web 界面通过局域网、端口转发、反代或隧道暴露出去的那一刻,任何能连上这个地址的人都能操作你的 agent——读写工作区文件、执行命令、消耗你的 API key。
这个插件把「能不能进来」变成「在飞书里能不能登录」:
- 保护你实际访问的那个地址(LAN IP / 隧道域名 / localhost,任意端口),不用为每个地址单独配置;
- 登录源就是飞书应用的可用范围——谁能用这个应用谁就能进,撤权在飞书后台一次搞定;
- 拿不到凭证时拒绝一切访问(故障关闭),不会悄悄退化成「没保护」。
展开完整文档(README 剩余 1 节)
@jianghuifr/dsh-feishu-auth 给 DeepSeek Harness(dsh)的 Web 界面加一道飞书登录:没通过飞书登录,首页、静态资源、/api 全拿不到。 为什么需要它 DSH 本身没有服务器级认证。把 Web 界面通过局域网、端口转发、反代或隧道暴露出去的那一刻,任何能连上这个地址的人都能操作你的 agent——读写工作区文件、执行命令、消耗你的 API key。 这个插件把「能不能进来」变成「在飞书里能不能登录」: - 保护你实际访问的那个地址(LAN IP / 隧道域名 / localhost,任意端口),不用为每个地址单独配置; - 登录源就是飞书应用的可用范围——谁能用这个应用谁就能进,撤权在飞书后台一次搞定; - 拿不到凭证时拒绝一切访问(故障关闭),不会悄悄退化成「没保护」。 flowchart LR A["浏览器任意地址"] -->|"未登录"| B["302 飞书授权页/api 返回 401 JSON"] A -->|"已登录"| F["DSH Web UI"] B --> C["飞书确认身份"] C --> D["签发会话 Cookie"] D --> E["交给 DSH 换它自己的 Cookie"] E --> F 三步上手 1. 飞书后台登记回调地址 — 开发者后台 → 你的应用 → 安全设置 → 重定向 URL,添加一条: <你访问用的地址>/feishu-auth/callback 例如 https://xxx.trycloudflare.com/feishu-auth/callback、http://192.168.1.23:3080/feishu-auth/callback。不支持通配符,最多 300 条;访问地址变了要补一条(临时隧道重启换域名就是这种情况)。 2. 放凭证 — 写进 ~/.dsh/.env(chmod 600): FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3. 激活并启动 — 从 npm 安装(推荐): dsh plugin --profile web add @jianghuifr/dsh-feishu-auth dsh web --no-open --host 0.0.0.0 --port 3080 --trusted-host <你的隧道域名> 装完后 profile 的 dsh.profile.bundles 会多一行,启动日志出现 飞书登录已挂载 和 网关自检通过 就绪。 想跑本地源码(要改代码、或离线环境)?手工放一份仓库到 ~/.dsh/plugins/dsh-feishu-auth/,再照 AGENTS.md 的安装与激活 在 profile 里插一行。tarball 离线安装用 dsh plugin ... add ./dsh-feishu-auth-0.1.0.tgz。 权限(scope)不用申请,open_id、union_id、tenant_key、姓名直接可读。 配置 写在插件行的 config: 下,共 4 项: | 配置 | 默认 | 说明 | | appId / appSecret | 环境变量 | 缺省读 FEISHU_APP_ID / FEISHU_APP_SECRET;两者都拿不到时拒绝一切访问 | | allowedUsers | [] | 留空 = 放行「能使用本应用的任意飞书成员」;填了就只放行列出的 open_id / union_id / user_id | | sessionMaxAgeDays | 14 | 会话有效期(天) | allowedUsers 该填什么:被拒的人会在页面上看到他自己的 open_id,抄进去保存即可——配置项热生效,不用重启。 退出登录 设置面板右上角有一个「退出登录」(关闭 按钮左边)。它调 /feishu-auth/logout,会清掉本插件的会话 Cookie 和 harness 自己的 dsh-auth-*——后者是关键,只清前者的话 harness 会立刻把人放回去。 标签页停在旧的 harness 报错页上时,按一次刷新即可恢复:网关会自己把浏览器接回来(同站重进 → 必要时换一份新凭据),不需要重新登录。 常见问题 | 现象 | 处理 | | 所有请求 503「未就绪」 | 进程环境里没有凭证。确认 ~/.dsh/.env,然后重启 | | 飞书报 redirect_uri unmatch | 回调地址没登记,或与当前访问地址不一致(隧道换域名了?) | | 飞书报 20010 | 该账号不在应用可用范围内,或应用版本未发布 | | 换了地址要重新登录 | 正常:Cookie 按来源隔离,https 隧道与 http://127.0.0.1 各算一处 | | 被自己关在门外 / 想彻底回退 | 用 disable.patch.yml 启动一次(见下),或给那行加 disabled: true 后重启 | 临时停用(凭证写错、飞书挂了、改错配置把自己锁在外面)—— --patch 收的是路径,所以指向你实际装的那一份: 从 npm 安装的(推荐):包在 profile 的 node_modules 里 dsh --profile web --patch ~/.dsh/profiles/web/node_modules/@jianghuifr/dsh-feishu-auth/disable.patch.yml \ --no-open --host 0.0.0.0 --port 3080 本地源码跑的 dsh --profile web --patch ~/.dsh/plugins/dsh-feishu-auth/disable.patch.yml \ --no-open --host 0.0.0.0 --port 3080 overlay 里只有 - id: feishu-auth + disabled: true,按 id 覆盖组合包自带的那一行,所以与代码从哪加载无关;需要路径的只有 --patch 自己。 文档 - AGENTS.md — 面向智能体与维护者:安装激活、运维速查、开发约束、改动流程 - docs/architecture.md — 内部设计:拦截层、两段式交接、Cookie 与会话、失败模式 - docs/release.md — 分发形态、CI 与发版流程 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
jianghuifr/dsh-feishu-auth
给 Web 界面加飞书登录,未授权者一律拒之门外
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目