# @eduwork/dsh-oidc 中文文档

规范地址：https://npmcn.com/package/%40eduwork/dsh-oidc/

版本：0\.3\.3
npm 元数据更新时间：2026-11-05T01:19:22.207Z
中文译文更新时间：2026-11-13T07:36:28.670Z
软件包许可：MulanPSL-2\.0 AND MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40eduwork/dsh-oidc
原文对照：https://npmcn.com/package/%40eduwork/dsh-oidc/?lang=original
项目主页：https://github.com/ECNU/EduWork/tree/main/packages/dsh-oidc#readme
源码仓库：https://github.com/ECNU/EduWork

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：722 kB，102 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24\.18\.0
- 运行依赖：1 个
- peer 依赖：react ^18\.2\.0，react-dom ^18\.2\.0，@deepseek-ai/cordis \>=4\.0\.5 \<4\.1\.0 \|\| 4\.1\.0，@deepseek-ai/dsh-fs \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-llm \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@earendil-works/pi-ai ^1\.1\.0，@deepseek-ai/dsh-brand \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-scope \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-sandbox \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-session \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-timeout \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-settings \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-llm-pi-ai \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-attachment \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-api-remotes \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-credentials \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-authorization \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-locale \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-host-webserver \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-theme \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-typert-protocol \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-sidebar \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-renderer \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-settings \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-launch-environment \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-conversation \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-settings-models \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1，@deepseek-ai/dsh-client-ui-settings-general \>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1
- 首次发布：2026-09-05T15:56:51.175Z
- 最新版本发布：2026-11-05T01:19:21.832Z
- 近 30 天下载量：3610（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

基于标准的 OIDC 身份, 授权的 模式访问, 声明品牌, 和 OpenAI 兼容的 模式集成 为 DeepSeek Harness

## 安装

```sh
npm install @eduwork/dsh-oidc
```

也可以使用：`pnpm add @eduwork/dsh-oidc`、`yarn add @eduwork/dsh-oidc`、`bun add @eduwork/dsh-oidc`

## README

# dsh-oidc

**简体中文** | [English](https://npmcn.com/package/%40eduwork/dsh-oidc/README_EN.md)

一次机构登录，直接使用获授权的模型。

当前源码提供 LiteLLM native OAuth 和显式启用的 oidc-llm 0.1 实验接入。两者共用浏览器/loopback、PKCE、Host 会话、刷新、退出与 DSH Provider；模型请求使用当前 Access Token，客户端不再申请或保存机构模型 API Key。个人 API Key 设置独立保留。

版本 `@eduwork/dsh-oidc@0.3.0` 面向 Node.js 24.18+ 和 DSH 0.2.1-rc.2，可独立安装到本机 DSH Web Profile；Web 后端不依赖 EduWork 桌面桥接。机构模型接入需要部署者提供兼容网关和公开 Profile 配置。

```sh
dsh plugin --profile web add @eduwork/dsh-oidc@0.3.0
```

启动 DSH 前，将 `EDUWORK_OIDC_PROFILE` 设为 Profile JSON 文件的绝对路径。默认 bundle 使用 Web 后端；EduWork 桌面用户继续使用发行配置。旧 Key Binding 配置需要先[迁移](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/key-binding-protocol.md)。

## 开始接入

1.  根据服务端选择 [LiteLLM 接入指南](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/gateway-auth/litellm-setup.md) 或 [oidc-llm 实验接入](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/gateway-auth/experimental-oidc-llm.md)。
2.  复制对应的[LiteLLM 示例](https://npmcn.com/package/%40eduwork/dsh-oidc/examples/litellm.enterprise-profile.example.json)或[OIDC Token 示例](https://npmcn.com/package/%40eduwork/dsh-oidc/examples/oidc-llm.enterprise-profile.example.json)，填写完整发现地址与所需公开配置。
3.  在桌面 Host 使用 backend: desktop，本机 Web 使用 backend: web。仅身份登录仍可使用[纯身份示例](https://npmcn.com/package/%40eduwork/dsh-oidc/examples/identity-only.example.json)；该模式不提供企业模型。
4.  登录后自动读取当前授权的模型目录。账户刷新不应覆盖用户后来选择的个人模型。

当前源码按模型 `type` 注册，仅 `llm` 进入对话。服务器只返回 ID 时，升级前须按实际模型 ID 补充 `provider.models[].type`；服务端类型优先，专用及类型未知的模型不进入对话。仅返回 ID 的服务端需同时补齐配置中的模型类型。详见[模型说明](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/enterprise-profile.md)。

从源码验证：

```sh
cd packages/dsh-oidc
npm ci
npm run check
```

配置加载、Host 组合和服务端要求见[接入指南](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/getting-started.md)。发行装配需使用经过审查、已发布并锁定的包；源码修改不会自动进入现有安装包。

## 功能与边界

-   OIDC 模式验证 ID Token 签名、issuer、audience、nonce 与 UserInfo subject。LiteLLM native 按其自身契约处理，不猜测 Token 类型或降级协议。
-   请求前检查 Token 有效期；临近到期自动刷新，并发刷新合并为一次。
-   退出清理本地授权并取消在途模型请求，尽力撤销 Refresh Token。已签发 Access Token 的服务端有效期由服务端管理。
-   模型目录、JSON/SSE、推理档位和附件处理复用 DSH Provider。机构配额由[可选扩展](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/account-extensions.md)通过共享 Host 传输读取。
-   品牌配置只接受受限数据，不加载远程代码。插件面向单机客户端，Web 仅监听本机。

进一步阅读：[Profile 配置](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/enterprise-profile.md)、[桌面 Host](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/desktop-host.md)、[架构](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/architecture.md)、[安全边界](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/security-model.md)、[开发](https://npmcn.com/package/%40eduwork/dsh-oidc/docs/development.md)。

## 常见问题

### @eduwork/dsh-oidc 是什么？

基于标准的 OIDC 身份, 授权的 模式访问, 声明品牌, 和 OpenAI 兼容的 模式集成 为 DeepSeek Harness

### 如何安装 @eduwork/dsh-oidc？

在项目目录运行 npm install @eduwork/dsh-oidc，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（^18\.2\.0）、react-dom（^18\.2\.0）、@deepseek-ai/cordis（\>=4\.0\.5 \<4\.1\.0 \|\| 4\.1\.0）、@deepseek-ai/dsh-fs（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-llm（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@earendil-works/pi-ai（^1\.1\.0）、@deepseek-ai/dsh-brand（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-scope（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-sandbox（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-session（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-timeout（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-settings（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-llm-pi-ai（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-attachment（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-api-remotes（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-credentials（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-authorization（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-host-webserver（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-theme（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-typert-protocol（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-sidebar（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-renderer（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-settings（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-launch-environment（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-conversation（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-settings-models（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）、@deepseek-ai/dsh-client-ui-settings-general（\>=0\.2\.1-rc\.2 \<0\.3\.0-0 \|\| 0\.2\.2-rc\.1）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @eduwork/dsh-oidc 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/eduwork\_\_dsh-oidc 是否存在。

### @eduwork/dsh-oidc 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @eduwork/dsh-oidc 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.18\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @eduwork/dsh-oidc 可以商用吗？

@eduwork/dsh-oidc 使用 MulanPSL-2\.0 AND MIT 许可。声明的许可为 MulanPSL-2\.0 AND MIT，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @eduwork/dsh-oidc 的下载量有多少？

根据 npm 官方下载统计，@eduwork/dsh-oidc 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,610 次，日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @eduwork/dsh-oidc 还在维护吗？

最新版本 0\.3\.3 发布于 2026/11/05（8 天前）；至今共发布 13 个版本，其中过去 12 个月发布了 13 个；首次发布于 2026/09/05。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

