HWDC 2026 2026.10.14 13:30 – 15:00

讓 AI Agent、 MCP Server、CLI 安全登入

MCP OAuth 2.0 Workshop。從一支沒有任何認證、誰都能呼叫的 MCP Server 出發,一關一關補上授權:401 挑戰、Protected Resource Metadata、Authorization Code + PKCE、JWT 驗證、scope 與 audience,最後交給 Kong Gateway 集中守入口。

Lab 01
活動
Hello World Dev Conference 2026
時間
2026.10.14 13:30 – 15:00
形式
90 分鐘實機操作
規範版本
MCP Authorization 2026-07-28

一次授權,四個參與者

MCP 授權規格的方向是:把 MCP Server 視為 OAuth 的 Resource Server。投影片裡每個角色都有固定的顏色,這一頁也一樣。

Client

Claude Code、Codex CLI

代表你登入、保管 Token,每次呼叫 MCP 都帶上它。

Browser

瀏覽器(你)

登入帳號,確認這個 App 要拿哪些權限,按下允許。

Authorization Server

Signet

驗證身分、徵得同意、簽發 Token,公開驗簽用的 JWKS。

Resource Server

MCP Server

持有工具與資料。驗 Token,決定放不放行。

Client ID 是公開識別,不是密碼。CLI 屬於 public Client,沒有 client secret,所以要靠 PKCE 保護登入流程。

每一關回答一個問題

現場提供已架好的 OAuth 2.0 / OpenID Connect 認證閘道,你的時間全花在自己筆電上的 MCP Server 與 Client。

  1. Lab 0110 分 沒有授權會怎樣? 任何人都能呼叫所有工具,分不出讀取與寫入。
  2. Lab 0215 分 Client 怎麼知道去哪登入? 401 加 WWW-Authenticate,再由 PRM(RFC 9728)與 AS metadata(RFC 8414)帶路。
  3. Lab 0325 分 怎麼證明你是誰? Authorization Code + PKCE(RFC 7636),Server 用 JWKS 驗 JWT 的簽章、iss、aud、exp、type。
  4. Lab 0420 分 你能做什麼、能去哪? scope 分讀寫,audience(RFC 8707)讓 A 的 Token 打不進 B,subject 隔離每個人的資料。
  5. Lab 0610 分 多個服務怎麼共用入口? Kong + mcp-oauth2 plugin 集中驗 Token,工具與資料權限仍留在服務。
  6. Lab 05課後選修 撤銷後會立刻失效嗎? 離線驗 JWT 不會即時知道撤銷;需要時再設計 introspection 或撤銷傳播。

程式是完整可執行的完成版。重點不是手刻 OAuth,而是看懂每個請求、每一次拒絕代表什麼。

帶走這七件事

把授權伺服器換成公司既有的 Keycloak、Auth0 或 Microsoft Entra ID,同一套設計原則與程式碼仍然適用。

  • 401 + PRM 告訴 Client 去哪登入;Server 不代替 Client 登入
  • public Client 沒有 secret,靠 PKCE 保護授權碼
  • 每次呼叫 MCP 都要帶 Access Token
  • Server 驗 簽章、iss、aud、exp、type
  • 401 是 Token 不被接受;403 是權限不夠
  • Gateway 集中入口驗證,工具與資料權限仍留在服務
  • 撤銷 不等於立即失效,離線驗證要另外處理

事前準備

不需要事先熟悉 OAuth 或 MCP,會基本的 HTTP 與終端機操作就夠了。

  • 一台可執行 Docker / Docker Compose 的筆電(macOS、Linux 或 Windows WSL2)
  • 已安裝 git、curl、jq 與任一終端機
  • 依課前文件準備 MCP Server 與 MCP Client 範例的執行環境
  • 事先拉取工作坊映像檔,避免現場網路壅塞

現場有備援

會提供預載映像檔的隨身碟,並安排助教協助處理環境問題。詳細 setup 文件請見工作坊 Repo。

投影片與教材

投影片含每一關的時序圖,可用鍵盤左右鍵翻頁。

講者

吳柏毅Appleboy
聯發科技 後端架構工程師

負責公司內部 Technology Platform 的開發與維運,以 Go 建構微服務,並導入 DevOps 與自動化流程。長期貢獻開源專案,目前專注於 AI 工具導入,探索 AI 如何加速軟體團隊的開發流程與決策效率。