dsh-notion-oauth-ui:通过 OAuth 2.0 + PKCE 连接 Notion

前言

在 DeepSeek Harness (DSH) 的生态中,连接外部服务通常需要命令行操作或手动处理认证令牌。dsh-notion-oauth-ui 插件提供了一个基于 GUI 的解决方案,利用 OAuth 2.0 和 PKCE 协议,通过官方 Notion MCP 服务器实现无感登录。

插件定位

这是一个连接 Notion 的 GUI 插件。它允许用户在 DSH 界面中直接通过浏览器完成 OAuth 2.0 授权,无需手动复制 Integration Token,也无需在终端中维护凭据。页面、数据库和评论通过官方 Notion MCP 服务器进行访问。

核心功能

  1. GUI 登录:在 DSH 设置页面点击“Login”按钮即可完成认证,无需终端交互。
  2. OAuth 2.0 + PKCE:使用动态客户端注册(RFC 7591)和 PKCE(S256),无需配置 client_id/secret。
  3. 静默刷新:访问令牌会在过期前自动刷新,刷新令牌支持原子轮换。
  4. 标准工具:通过官方 MCP 服务器提供 mcp__notion__* 系列工具,用于搜索、读写页面和数据库。
  5. CLI 回退:支持在无 GUI 环境或纯 CLI profile 下使用 dsh notion login 命令。

安装与配置

安装该插件需要使用 DSH 的包管理器。

dsh plugin --profile <name> add dsh-notion-oauth-ui

安装完成后,需要在设置中配置相关参数,默认值如下:

Key Default Meaning
mcpUrl https://mcp.notion.com/mcp Notion MCP 服务器地址
port 53007 本地 OAuth 回调端口 (127.0.0.1)
refreshLeadMs 300000 (5 min) 提前多少毫秒刷新即将过期的令牌
refreshRetryMs 60000 (1 min) 刷新失败时的重试间隔

使用方式

GUI 流程

  1. 打开 DSH,进入侧边栏的 Plugins,点击 Add plugin。
  2. 输入 dsh-notion-oauth-ui 并点击 Install。
  3. 打开 Settings(齿轮图标或 Ctrl + ,),在插件列表中找到 Notion。
  4. 点击 Login 按钮,浏览器将打开 Notion 的授权页面。
  5. 选择工作区并勾选“我识别并信任此 URL”,点击 Continue。
  6. 授权成功后,页面显示 Connected,mcp__notion__* 工具即可使用。

CLI 流程

对于无 GUI 或纯 CLI profile,流程相同,只需在终端执行:

dsh plugin --profile <name> add dsh-notion-oauth-ui
dsh notion login

安全与架构

该插件在设计上侧重于安全性:

  • Loopback-only 控制路由:设置页面的 API 路由(/api/dsh-notion-oauth-ui/{status,login,logout})仅接受来自 127.0.0.1 的请求,并严格校验 HTTP 方法和 Host 头,防止跨站请求攻击。
  • OAuth 强化:采用授权码模式 + PKCE(S256),每次授权流程携带唯一的 state 参数,并设置 10 分钟的回调截止时间,防止恶意回调中断真实授权。
  • 传输安全:强制要求 mcpUrl 必须为 https:// 协议,防止中间人攻击。
  • 令牌静止存储:访问令牌和刷新令牌存储在 DSH 的凭据服务中(记录名为 NOTION_OAUTH)。这些令牌仅在 DSH 进程内部可见,不会暴露给浏览器或写入日志。

适用场景

该插件适合需要频繁操作 Notion 数据的开发者或用户,特别是习惯于 GUI 操作而非命令行输入的场景。

注意:DSH 插件与主进程运行在同一用户权限下。插件通过 DSH 凭据服务存储敏感信息,任何拥有凭据访问权限的插件都可以读取(包括 NOTION_OAUTH 和 DEEPSEEK_API_KEY),因此请确保你的系统环境安全。

结语

dsh-notion-oauth-ui 通过官方 MCP 标准和 OAuth 2.0 协议,简化了 Notion 与 DSH 的集成流程。它将繁琐的令牌管理自动化,同时通过严格的本地路由和 HTTPS 限制保证了安全性。

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

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

小夜