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 限制保證了安全性。

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

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

小夜