AI Engineer Europe 2026 · 演講 · 2026-04-28 · 23 分
用公司 SSO 一次連上所有 MCP
One Login to Rule Them All: Cross-App Access for MCP · Garrett Galow,WorkOS
MCP 的 OAuth 同意畫面煩人,也讓 IT 管不到 agent 拿了哪些權限。Garrett Galow 介紹 Cross-App Access(XAA),讓身分供應商替 client 與 server 牽線,使用者不必再點同意。
概要
- 同意畫面是 OAuth 的遺留MCP 底層用 OAuth,預設兩個系統彼此不信任,所以每連一個 server 都要使用者同意一次。但公司早就用 Okta 這類 SSO 登入各個應用,MCP 沒有沿用這個模型。
- IT 看不到也收不回Garrett 說 IT 無法得知員工連了哪些 MCP 服務、用哪些 AI agent。帳號被停用後,已發出的 access token 與 refresh token 仍可能讓人在數天到數月內保有存取權。
- XAA 讓 IdP 當中間的信任方Cursor 與 Figma 都已經信任同一個 Okta,XAA 讓 Cursor 向 Okta 換一張 IDJAG token,再拿去向 Figma 換 access token,全程不需要人介入。
- 使用者只登入一次 IdPIdP 登入後,換 token 的步驟都在背景進行。access token 可以做得很短命(Garrett 舉例多數是五分鐘),SSO session 一被鎖,token 過期後就連不回去。
- 三方各有要做的事IT 在 Okta 設定哪個 app 可以向哪個 app 要存取;MCP client 要能向 IdP 要 IDJAG 並做 token 交換;MCP server 要支援新的 JWT bearer 類型、驗證 token、再發 access token。
- 目前還很新Q&A 中 Garrett 說這只解決 authentication,不處理 authorization 的 scope;目前只有 Okta 支援,Microsoft 還沒加。
原話
▶ 01:40“You have this nice little consent screen that you're not going to read, you're just going to say OK, and you're going to get redirected back.”
你有個漂亮的同意畫面,你不會去讀,只會按 OK,然後被導回來
▶ 03:25“It sort of assumes that, you know, none of these apps know anything about each other.”
它彷彿假設這些應用彼此毫無所知
▶ 11:41“It's using a regular OAuth access token. It's not a new type of credential.”
用的是一般 OAuth access token,不是新型態的憑證
▶ 17:14“By default, no. So this is kind of just around the authentication bit.”
預設不行,這主要只涉及 authentication 的部分
延伸
- 帶 scope 的授權不在目前的規格裡,Garrett 說這是他們正在討論、之後必須處理的方向。
- CIMD,Garrett 說大約三個月前才出來,所以生態系支援還少,但體驗比 DCR 好。
章節
點時碼直接跳到原片的那一段。
- 開場與自我介紹Garrett Galow 說自己做了近 15 年企業開發者平台,現在在 WorkOS,他們的 auth 服務用在 Anthropic、Cursor、OpenAI 等公司。
- MCP 的同意畫面用 Cursor 示範每個 MCP server 都要彈出同意視窗,有時還會莫名其妙要再來一次。
- OAuth 與 SSO 不對盤這是 MCP 採用 OAuth 的結果:OAuth 假設兩個系統互不信任,但公司裡大家已經用 Okta 這類 SSO,MCP 卻假設各應用互不相識。
- IT 團隊的難處使用者可以忍受麻煩,真正的問題在 IT:看不出員工連了哪些 MCP 服務、用哪些 AI agent,也擋不住不想讓 agent 碰的敏感資料。
- Axios 事件與長效 tokenGarrett 自己中了 NPM Axios 套件被入侵的事件,IT 能切網路、撤 Okta session,但本機的 MCP 連線與 API key 沒走 IdP;SSO 撤銷後 token 仍可能留著,新人到職也得自己逐一授權。
- 解法:Cross-App AccessXAA 讓 IdP 成為應用之間的信任方;Cursor 與 Figma 都已信任 Okta,所以可以不經人工就換到憑證。
- Demo:Claude Code 自動連 Figma左邊是一般 Claude Code,連 Figma 要走授權;右邊是他們實作的 XAA 版本(beta),登入 Okta 一次後,Figma 自動連上,沒看到同意畫面。
- 流程拆解:四個角色涉及 client、IdP、資源授權伺服器與資源伺服器;client 用 IdP 發的 ID token 與 refresh token 去要 IDJAG,再交給 Figma 換 access token。
- 使用者無感與短效 token第二、三步使用者看不到;token 到期後可自動重跑流程,SSO session 一被鎖就連不回去,資安姿態比較好。
- IT 管理員要設什麼沿用既有的 Cursor 與 Figma 的 Okta 應用,在 Okta 新的管理連線入口設定哪個 app 可以向哪個 app 要存取。
- MCP client 要做什麼要支援 SSO 與 XAA、向 IdP 要 IDJAG、對 server 發交換請求;WorkOS 已做完前三步,Cursor 與 Anthropic 正是用 WorkOS 的 SSO 連線在做這件事。
- MCP server 要做什麼要宣告支援新的 JWT bearer 類型、接收並向 IdP 驗證 token,最後發出 access token;規格細節 Garrett 建議看 blog 或請 Claude 解釋。
- Q&A:authorization 與 scope有聽眾問這是否解決授權;Garrett 說預設不,仍是以自己在 Figma 的權限登入,帶 scope 的授權目前不在規格內。
- Q&A:client 怎麼指定目標靠 audience URL(例如 mcp.figma.com),Okta 內設定該 app 涵蓋哪個 audience,Figma 也驗證 JWT。
- Q&A:IdP 支援現況目前只有 Okta 支援,且是 OIDC 型連線,SAML 之後會支援;Microsoft 還沒加,他們正在推動。
- Q&A:DCR 與 CIMD有聽眾提到某個 IdP 不支援 DCR;Garrett 說不支援時只能預先註冊 client,CIMD 是取代 DCR 的新標準,但生態系支援還少。
名詞
- Cross-App Access(XAA)
- 讓身分供應商在 MCP client 與 server 之間當信任方,免去逐一同意的做法
- IDJAG
- Identity JWT Authorization Grant,XAA 所依據的規格,也指 IdP 發出、可跨服務使用的 token
- Okta
- Garrett 示範用的 IdP,目前唯一支援 XAA 的
- IdP
- 身分供應商,公司員工 SSO 登入的來源
- MCP client / server
- 這場的例子裡 client 是 Claude Code 與 Cursor,server 是 Figma 的 MCP
- resource authorization server
- 負責驗證 IDJAG 並發 access token 的伺服器,與 Figma API 這個資源伺服器分開
- SCIM
- Garrett 提到的帳號管理機制,可完整撤銷存取權,但許多公司沒有使用
- DCR
- 動態 client 註冊;不支援時要預先註冊 client
- CIMD
- 用 metadata 文件預先定義 client 的新標準,Garrett 說它取代 DCR,但想不起縮寫全名
- WorkOS
- Garrett 任職的公司,提供 SSO 等 auth 服務,並已實作 XAA 的 client 端流程








