繁體中文(台灣)
  • mcp access control
  • mcp rbac
  • personal access token

強化你的業務:連接 AI 工具到現有服務,帶有存取控制

了解如何透過個人存取權杖 (Personal Access Tokens) 和模型上下文協議 (Model Context Protocol, MCP) 安全地將 AI 工具連接到你的現有服務,並提供完整的原始碼和實用範例。

Yijun
Yijun
Developer

不要在使用者認證上浪費數週時間
使用 Logto 更快地發布安全應用程式。幾分鐘內整合使用者認證,專注於您的核心產品。
立即開始
Product screenshot

歡迎來到將 AI 工具與現有服務連接的存取控制指南!

我們將探討如何準備你的現有服務以整合 AI 工具,特別是透過與 LLM 和各種 AI 代理的整合(使用 模型上下文協議,同時解決存取控制挑戰。

通過這個指南,你將獲得:

  • 無縫的 AI 整合:學習如何將 AI 工具與各種服務連接,讓你的數據和功能在 AI 環境中使用
  • 增強的 API 安全性:改善 API 接口,以有效的存取控制來保護數據及用戶隱私
  • 個性化 AI 體驗:透過個人存取權杖為每個使用者創造獨特的 AI 輔助體驗

我們提供完整的教程資源,完整的示範項目 原始碼(包含前端、後端和 MCP 伺服器),甚至包含實用指南來幫助你從頭開始建立 AI 準備好的服務。

這個指南將如何提升你的業務:

  • 競爭優勢:提升你的服務技術能力和用戶體驗,以在競爭激烈的市場中脫穎而出
  • 提高用戶價值:讓用戶透過 AI 工具發掘產品更深層的價值,以增加保留率和滿意度
  • 準備迎接未來:無縫將你的服務整合進 AI 生態系,為即將到來的 AI 驅動商業景觀做好準備,並開啟創新的增長路徑

讓我們開始吧!

什麼是 MCP 及其如何連接 AI 工具到你的服務

MCP (模型上下文協議) 是一個開放、通用的協議,標準化了應用程序如何提供上下文信息給大型語言模型(LLM)。

MCP 由多個關鍵組件協同工作來使 AI 工具能夠存取你的服務:

在本指南中,你只需知道 MCP 伺服器是連接服務和 AI 工具的關鍵點。它負責提供一系列工具供 LLM 使用,而這些工具將與你的服務互動。關於 MCP 的更多詳情,你可以參考 什麼是 MCP (模型上下文協議) 及其工作原理。在這裡,我們只會集中於 MCP 伺服器。

我們將以已整合角色基於存取控制 (RBAC) 策略的內容管理系統 (CMS) 作為範例。我們將為其創建一個 MCP 伺服器,並定義一個 get-available-article-count 工具,讓 LLM 可以檢索當前用戶在 CMS 中可用的文章數量:

這是將 MCP 伺服器連接到你的服務的關鍵代碼。在此工具實現中,它向服務的 api/articles 端點發出請求並返回結果。

然而,這還遠遠不夠,因為你的服務 API 可能並非公開。每個端點都需要存取控制,不同的用戶可以存取不同的資源和數據。

所以接下來,我們將討論如何為服務添加存取控制。

如何為 MCP 伺服器實施存取控制

重要的是要理解,通過 AI 工具存取你的系統的用戶和直接使用你的系統的用戶是一樣的——當他們通過 AI 工具進行互動時,MCP 伺服器充當了他們的代表。

因此,當用戶通過 AI 工具存取你的服務時,會出現兩個實際的存取控制挑戰:

  • MCP 伺服器如何像用戶一樣登入系統?
  • 你的系統是否應該重新設計其整個存取控制機制以適應 MCP 伺服器?這將會是巨大的成本和努力,特別是當你的原始系統已經有自己的身份驗證機制時

解決這些問題的關鍵是:

用戶如何讓 MCP 伺服器在不使用其憑證和交互式登入的情況下授予服務的存取權限?

如果你能解決這個問題,你可以直接通過 MCP 伺服器與你的服務進行互動,而你的服務可以繼續使用為用戶以前設計的存取控制機制,而無需為 MCP 伺服器重新設計新的系統!

但是這可能嗎?

當然可以!我們可以通過使用 個人存取權杖 完美地解決這個問題!

個人存取權杖 (PATs) 提供了一種安全的方法,讓用戶在不使用其憑證和交互式登入的情況下授予存取權杖。這對於需以程式化方式存取資源的 CI/CD、腳本或應用程式非常有幫助。

這就是工作流程的樣子:

因此,只要你的系統支持個人存取權杖 (PATs),你就可以在不重新設計身份驗證機制的情況下,完美解決 AI 工具和現有服務之間的存取控制挑戰,同時確保數據安全性和用戶隱私保護。

現在,讓我們來看看如何在實踐中實現這一點。

MCP 伺服器存取控制的實施

在本節中,我們將使用現有 CMS 系統為基礎來實施 MCP 伺服器存取控制。

你可以查看完整的 CMS 範例教程和原始碼在 RBAC in practice: Implementing secure authorization for your application,但這不是必修的,我們會在這裡涵蓋所有必要的原則。

此 CMS 範例基於 Logto,這是一個流行的開源身份平台,提供了全面的身份驗證和授權解決方案,但技術實現不是本文的重點。

為你的服務設計許可和存取控制策略

實施存取控制的第一步是為系統設計許可和存取控制政策。

在我們的 CMS 範例中,我們基於 RBAC (角色基於存取控制) 設計了以下 API 端點,並指定了存取每個端點所需的權限:

項點存取控制邏輯
GET /api/articles- 任何具有 list:articles 許可權者,或作者可查看自己的文章
GET /api/articles/:id- 任何具有 read:articles 許可權者,或該文章的作者
POST /api/articles- 任何具有 create:articles 許可權者
PATCH /api/articles/:id- 任何具有 update:articles 許可權者,或該文章的作者
DELETE /api/articles/:id- 任何具有 delete:articles 許可權者,或該文章的作者
PATCH /api/articles/:id/published- 只有具有 publish:articles 許可權的用戶

系統的許可設計如下:

許可描述
list:articles查看系統中所有文章的名單
read:articles閱讀任何文章的完整內容
create:articles創建新的文章
update:articles修改任何文章
delete:articles刪除任何文章
publish:articles更改發布狀態

基於這些許可權,我們為 CMS 系統定義了以下角色:

許可權/角色👑 管理員📝 發布者✍️ 作者
描述完整系統存取,進行全面內容管理可以查看所有文章並控制發布狀態能在系統創建新文章
list:articles
read:articles
create:articles
update:articles
delete:articles
publish:articles

注意:作者無論角色許可如何,均自動擁有閱讀/更新/刪除自己文章的許可權。

接下來,我們將在系統中為用戶分配角色(以 CMS 展示為例):

用戶角色
Alex管理員
Bob發布者
Charlie作者

在 Logto 中,如上述 RBAC in practice 文章所提及,我們為用戶設置了角色。

Logto 角色

將存取控制政策應用於你的服務 API

這是用戶登入我們 CMS 範例的方式:

因此,將存取控制應用於你的服務 API 如下簡單,只需在步驟 9 加入用於驗證存取權杖並檢查許可權的中介層即可。

核心實現如下(完整實現參見 RBAC sample - 後端):

將中介層應用於需要身份驗證的 API 端點:

我們現在已經為 CMS 系統增加了存取控制並為用戶分配了角色。

在用戶登入並獲取 CMS API 的存取權杖後,他們可以使用此權杖存取 CMS API。存取權杖包含用戶的許可信息。這讓我們能夠根據用戶許可來控制返回的數據。

我們的下一步是實現 MCP 伺服器以使用個人存取權杖。

理解個人存取權杖如何代表用戶

參閱上方的 CMS 身份驗證流程,用戶在登入後獲得用於 CMS API 的存取權杖。此存取權杖是他們存取 CMS API 的憑證。

我們只需獲取類似用戶登入後獲得的存取權杖。然後我們可以用它存取 CMS API。

這就是個人存取權杖的作用。它們幫助我們獲得與用戶通常在登入後獲得的類似存取權杖。

這是我們需要做的:

  1. 為一個用戶創建一個個人存取權杖
  2. 使用此個人存取權杖向驗證服務的權杖端點請求一個交換權杖。這樣我們可以獲得類似用戶在登入後獲得的存取權杖
  3. 在我們的 MCP 服務工具中使用此存取權杖來存取 CMS API

在這個例子中,我們用 Logto 進行演示,因為 Logto 支持個人存取權杖和權杖交換。如果你未使用 Logto,可以依照這個方法設計你的個人存取權杖支持。

為用戶創建個人存取權杖

在 Logto 控制台 > 用戶管理中,你可以從用戶個人細節頁面創建個人存取權杖:

在 Logto 控制台中創建個人存取權杖

創建個人存取權杖時,你可以根據需要設置過期時間。

在 MCP 伺服器中使用個人存取權杖

既然我們有了用戶的個人存取權杖,我們可以在 MCP 伺服器中使用它。

首先,根據 Logto 的 個人存取權杖文件,我們將從 Logto 的權杖端點獲取用於存取 CMS API 的存取權杖。完整原始碼可參閱 這裡

接著在 MCP 伺服器中,我們使用 exchangeAccessToken 函數獲得的存取權杖來獲取 CMS API 的數據。

這樣,MCP 伺服器無需用戶的登入憑證即可存取 CMS API。取而代之地,它使用用戶的個人存取權杖。

你可以在 RBAC sample - mcp-server 找到完整的代碼。

要了解如何在本地使用 Claude Desktop 部署該 MCP 伺服器,請查看:MCP 伺服器部署指南

你也可以將此伺服器部署到各種 AI IDE,例如 CursorClineWindsurf 等。

測試存取控制

讓我們在 Claude Desktop 中測試此實現。

在我們的 CMS 中,Alex 和 Charles 各自創建了一篇文章。

由於 Alex 擁有管理員角色,他可以查看所有文章。Charles 作為作者,只能查看自己的文章。

當我們問 Claude 有多少可用文章時,Claude 將使用 get-available-article-count 工具並要求我們的權限:

詢問是否使用工具

當我們在 MCP 中使用 Alex 的個人存取權杖並詢問 Claude 多少可用文章時,Claude 調用 get-available-article-count 工具並告訴我們有兩篇文章。

給 Alex 的回答

當我們切換到 Charles 的個人存取權杖時,詢問同樣的問題,Claude 告訴我們只有一篇文章。

給 Charles 的回答

太棒了!我們成功地使用個人存取權杖來存取 CMS API 並獲得正確的數據。

這正是我們所期待的:我們為每個用戶創建個人存取權杖,用戶在配置他們的 MCP 伺服器時,我們為他們創建了個性化的 AI 體驗。

讓我幫你撰寫總結部分:

總結

在本指南中,我們探討了如何在維持適當存取控制的同時將 AI 工具連接到你的現有服務。我們以 RBAC 實現的 CMS 系統為例,展示了個人存取權杖 (PATs) 如何優雅地解決身份驗證問題。

你可以在我們的 RBAC sample repository 中找到這個實現的完整原始碼,其中包含 CMS 後端、前端和 MCP 伺服器的實現。

在向用戶分發你的 MCP 伺服器時,請記得保持個人存取權杖可配置。這樣每個用戶可以:

  • 在 MCP 伺服器中配置他們自己的 PAT
  • 根據其特定許可權存取資源
  • 獲得反映其角色和存取級別的個性化 AI 體驗

這種方法確保你的 AI 整合在提供基於用戶許可和系統角色的個性化體驗的同時保持安全。

祝願你在這次 AI 整合之旅中業務獲得巨大成功!願你的服務隨著這些新的 AI 功能蓬勃發展和增長!🚀