企业托管授权
社区译文;来源: MCP 80041ab0
企业托管授权扩展(io.modelcontextprotocol/enterprise-managed-authorization)使组织能够通过现有身份提供商(IdP)集中控制对 MCP 服务器的访问。员工无需分别授权每台 MCP 服务器,组织的 IT 或安全团队可以在一个位置统一管理访问策略。
规范
企业托管授权扩展的完整技术规范。
它是什么
在标准 MCP 部署中,每个用户都会独立授权 MCP 客户端访问每台 MCP 服务器。对于消费级应用,这种由用户驱动的模式非常合适,因为它让个人能够控制谁可以访问自己的数据。
在企业环境中,这种模式会带来操作阻力和安全缺口:
- 员工不应需要理解组织所使用的每台 MCP 服务器的授权细节
- 如果每个用户都独立授权,安全团队就无法实施一致的访问策略
- 新员工入职时必须手动授权数十项服务
- 员工离职时必须逐项撤销其对每项服务的访问权限
企业托管授权通过将组织的 IdP 引入为权威决策者来解决这些问题。IdP(例如 Okta、Azure AD 或企业 SSO 系统)控制员工可以访问哪些 MCP 服务器以及访问条件。员工使用企业身份进行身份验证,也就是其用于电子邮件、Slack 和其他工作工具的同一套凭据;IdP 根据组织策略授予或拒绝对 MCP 服务器的访问。
何时使用
以下情况适合使用企业托管授权:
- 在企业环境中部署 MCP,且由 IT 管理所有业务应用的访问权限
- 实施组织访问策略,需要确保只有获得授权的员工才能访问特定 MCP 服务器
- 集中管理访问控制,希望从单一管理控制台添加或撤销 MCP 服务器访问权限
- 满足合规要求,组织需要保存所有 MCP 服务器访问的可审计授权轨迹
- 简化员工体验,员工应使用现有企业 SSO 凭据访问 MCP 工具,无需逐项完成服务授权流程
工作原理
该扩展建立一种委托授权流程,由企业 IdP 充当 MCP 客户端与 MCP 服务器之间的中介。MCP 客户端从企业 IdP 请求一种名为身份断言 JWT 授权许可(Identity Assertion JWT Authorization Grant,ID-JAG)的特殊令牌,然后使用 ID-JAG 从 MCP 服务器的授权服务器换取访问令牌:
sequenceDiagram
participant UA as Browser
participant C as MCP Client
participant IdP as Enterprise IdP
participant MAS as MCP Authorization Server
participant MRS as MCP Resource Server
C-->>UA: Redirect to IdP
UA->>IdP: Redirect to IdP
Note over IdP: User Logs In
IdP-->>UA: IdP Authorization Code
UA->>C: IdP Authorization Code
C->>IdP: Token Request with IdP Authorization Code
IdP-->>C: ID Token
note over C: User is logged<br/>in to MCP Client.<br/>Client stores ID Token.
C->>IdP: Exchange ID Token for ID-JAG
note over IdP: Evaluate Policy
IdP-->>C: Responds with ID-JAG
C->>MAS: Token Request with ID-JAG
note over MAS: Validate ID-JAG
MAS-->>C: MCP Access Token
loop
C->>MRS: Call MCP API with Access Token
MRS-->>C: MCP Response with Data
end
该流程的关键方面包括:
集中式策略:企业 IdP 维护已批准 MCP 服务器的注册表以及每台服务器的访问策略。管理员在现有身份管理工具中配置这些内容。
单点登录:员工只需使用企业凭据完成一次身份验证。IdP 签发令牌,使员工无需针对每台服务器响应额外的授权提示,即可访问已批准的 MCP 服务器。
策略实施:IdP 在签发令牌前评估访问策略(组成员资格、角色分配、条件访问规则)。未获授权的员工会收到适当错误,MCP 客户端绝不会获得用于未授权服务器的令牌。
集中撤销:员工的 MCP 服务器访问权限在 IdP 层撤销,并立即对所有 MCP 客户端生效,无需按客户端、按服务器逐项撤销。
实现指南
对于 MCP 客户端
要支持企业托管授权,客户端必须:
- 在每个请求的能力中声明支持:
{
"jsonrpc": "2.0",
"id": 1,
"method": "...",
"params": {
// Other fields...
"_meta": {
// Other fields...
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/enterprise-managed-authorization": {},
},
},
},
},
}支持 SSO:用户应通过企业 IdP 向 MCP 客户端进行身份验证。保存登录期间签发的身份断言(OpenID ID Token 或 SAML 断言),以供后续使用。
处理 ID-JAG:当服务器指示需要企业托管授权时,使用先前获得的身份断言,从企业 IdP 的授权端点请求 ID-JAG 令牌。再使用该 ID-JAG 从 MCP 授权服务器换取访问令牌。不要将用户重定向到 MCP 授权服务器的授权端点。
支持组织配置:允许管理员配置企业 IdP 的端点,通常应通过组织级设置完成,而不是逐用户设置。
遵守令牌作用域:企业 IdP 签发的令牌可能具有不同于标准 MCP 授权的作用域限制。应妥善处理作用域错误。
对于 MCP 服务器
要要求使用企业托管授权:
在服务器的授权元数据中声明该扩展,指明客户端必须使用企业托管流程。
集成 IdP 管理 API(可选):发布服务器的资源描述符,使企业管理员能够在 IdP 管理控制台中配置访问策略。
对于 MCP 授权服务器
验证 ID-JAG:验证企业 IdP 签发的 ID-JAG。通常需要根据 IdP 的 JWKS 端点验证 JWT 签名,并检查令牌的受众、签发者和过期时间。
将 IdP 声明映射到权限:ID-JAG 令牌携带服务器用于判断员工身份及其可访问内容的声明(作用域和资源信息)。请基于这些声明定义授权逻辑。
处理账户关联:ID-JAG 令牌始终包含 subject 声明,还可能包含 email 声明,可用于将企业身份关联到系统中的现有账户。应使用 subject 声明作为用户的主要稳定标识符,并使用 email 声明作为回退方式,以匹配配置企业托管授权之前创建的既有账户。
客户端支持
请查看客户端矩阵,了解各 MCP 客户端当前的实现状态。除了 MCP 客户端应用本身,企业托管授权通常还需要组织 IT 团队提供客户端层面的支持。
相关资源
ext-auth 仓库
源代码和参考实现
完整规范
包含规范性要求的技术规范
SEP-990(英文)
原始提案:启用企业 IdP 策略控制
MCP 授权
MCP 核心授权规范