Skip to content
MCP 文档版本 2026-07-28 更新于 2026-10-14

企业托管授权

通过身份提供商在企业环境中对 MCP 进行集中式访问控制

企业托管授权扩展(io.modelcontextprotocol/enterprise-managed-authorization)使组织能够通过其现有的身份提供商(IdP)集中控制 MCP 服务端访问。组织无需让每位员工单独授权每个 MCP 服务端,而是由组织的 IT 或安全团队在一处管理访问策略。

Specification

企业托管授权扩展的完整技术规范。

它是什么

在标准 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 请求一种特殊类型的令牌,称为 Identity Assertion JWT Authorization Grant,即 ID-JAG。MCP 客户端随后用 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

该流程的关键方面:

  1. 集中式策略:企业 IdP 维护一个已批准 MCP 服务端的注册表以及每个服务端的访问策略。管理员在其现有的身份管理工具中配置这些内容。

  2. 单点登录:员工使用其企业凭据进行一次认证。IdP 颁发的令牌授予对已批准 MCP 服务端的访问权限,无需额外的逐服务端授权提示。

  3. 策略实施:IdP 在颁发令牌之前评估访问策略(组成员资格、角色分配、条件访问规则)。未获得授权的员工会收到相应的错误——MCP 客户端永远不会收到未授权服务端的令牌。

  4. 集中式撤销:撤销员工对 MCP 服务端的访问在 IdP 层面进行,立即对所有 MCP 客户端生效。无需逐客户端、逐服务端地撤销。

实现指南

对于 MCP 客户端

要支持企业托管授权,你的客户端必须:

  1. 声明支持,在其逐请求能力中:
jsonc
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "...",
  "params": {
    // Other fields...
    "_meta": {
      // Other fields...
      "io.modelcontextprotocol/clientCapabilities": {
        "extensions": {
          "io.modelcontextprotocol/enterprise-managed-authorization": {},
        },
      },
    },
  },
}
  1. 支持 SSO——用户应使用企业 IdP 向 MCP 客户端进行认证。保存登录期间颁发的 Identity Assertion(OpenID ID Token 或 SAML assertion),以供后续使用。

  2. 处理 ID-JAG——当服务端指示需要企业托管认证时,使用先前获取的 Identity Assertion 向企业 IdP 的授权端点请求 ID-JAG 令牌。用此 ID-JAG 向 MCP 授权服务器换取访问令牌。不要将用户重定向到 MCP 授权服务器的授权端点。

  3. 支持组织配置 — 允许管理员配置企业 IdP 的端点,通常通过组织级设置而非每用户设置进行配置。

  4. 遵循 token 作用域 — 企业 IdP 签发的 token 可能带有与标准 MCP 授权不同的作用域限制。请优雅地处理作用域错误。

对于 MCP 服务端

要要求企业管理的授权:

  1. 声明扩展 — 在服务端的授权元数据中声明该扩展,表明客户端必须使用企业管理流程。

  2. 与 IdP 管理 API 集成(可选)— 发布服务端的资源描述符,以便企业管理员可以在其 IdP 管理控制台中配置访问策略。

对于 MCP 授权服务器

  1. 验证 ID-JAG — 验证企业 IdP 签发的 ID-JAG。这通常意味着根据 IdP 的 JWKS 端点验证 JWT 签名,并检查 token 的 audience、issuer 和过期时间。

  2. 将 IdP 声明映射到权限 — ID-JAG token 携带声明(scope 和资源信息),服务端使用这些声明来确定员工的身份以及员工可以访问的内容。基于这些声明定义你的授权逻辑。

  3. 处理账户关联 — ID-JAG token 始终包含 subject 声明,并且可能额外包含 email 声明,可用于将企业身份关联到系统中的现有账户。使用 subject 声明作为用户的主要稳定标识符,并回退到 email 声明以匹配在企业管理的授权配置之前创建的既有账户。

客户端支持

NOTE

对此扩展的支持因客户端而异。扩展是选择性加入的,默认情况下从不激活。

查看客户端矩阵以了解各 MCP 客户端的当前实现状态。企业管理的授权通常除了 MCP 客户端应用程序外,还需要组织 IT 团队提供客户端级别的支持。

相关资源

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。