Higress MCP Server 安全再升级:API 认证为 AI 连接保驾护航

news2025/5/29 10:23:37

Higress MCP Server 安全再升级:API 认证为 AI 连接保驾护航

Higress 作为一款强大的 AI 原生 API 网关,致力于铺设 AI 与现实世界之间最短、最安全、最具成本效益的连接路径。其核心能力之一便是支持将现有的 OpenAPI 规范无缝转换为 MCP Server,让 AI 能够快速、便捷地调用各类存量 API 服务。借助 Higress,企业和开发者可以瞬间将其宝贵的 API 资产转化为 AI 可用的远程 MCP Server,从而极大地加速 AI 应用的落地和创新。

当通过 Higress 托管的 MCP Server 集成 AI 与外部服务时,通常需要考虑两个主要的认证阶段:

1. 客户端到 MCP Server 的认证:这是指 MCP 客户端(例如 AI Agent)对 Higress 网关上托管 MCP Server 的端点进行的认证。Higress 为此阶段提供了强大的网关级认证机制,例如 Key Auth、JWT Auth 以及 OAuth2 支持。这些现有的 Higress 功能确保只有授权的客户端才能访问您的 MCP Server。

2. MCP Server 到后端 API 的认证:一旦授权客户端调用某个 MCP 工具,MCP Server 插件本身可能需要向该工具所代理的最终后端 REST API 进行认证。

本次发布聚焦于对第二阶段的重大增强:在 Higress MCP Server 插件内部为其与后端 REST API 的通信提供全面的 API 认证能力。此更新使开发者能够通过在 MCP Server 插件中进行配置,并遵循 OpenAPI 标准,以灵活且健壮的机制管理凭证和认证流程,从而安全地集成更广泛的后端服务。

下图阐释了这两个认证阶段:

本次新增核心认证功能概览 (针对 MCP Server 到后端 API)

此版本引入了多项核心功能来管理 API 认证:

1. 可重用认证方案:在服务器层面定义通用的认证方法(HTTP Basic、HTTP Bearer、API Key)。

2. 工具特定的后端认证:将已定义的认证方案应用于单个工具,指定 MCP Server 在调用后端 REST API 时应如何进行自我认证。

3. 透明凭证透传:允许 MCP 客户端(例如 AI 助手)提供的凭证安全地透传至后端 API。

4. 灵活的凭证管理:支持在方案级别设置默认凭证,并允许为特定工具覆盖这些默认凭证。

接下来,让我们深入了解如何利用这些功能。

定义认证方案 (server.securitySchemes)

您现在可以在 MCP Server 配置的 server 层级定义一组 securitySchemes。这种方式与 OpenAPI 规范 (OAS3) 中定义安全要求的方法保持一致,使其易于理解和标准化。每个方案代表您的后端 API 可能使用的一种特定认证方法。

目前,Higress MCP Server 插件支持以下方案类型:

  • http 配合 ``scheme: basic (HTTP Basic 认证)
  • http 配合 ``scheme: bearer (HTTP Bearer 令牌认证)
  • apiKey 配合 ``in: header 或 in: query (位于 Header 或查询参数中的 API Key)

我们计划在未来的版本中增加对 oauth2 和 openIdConnect (OIDC) 方案的支持,从而进一步扩展您可以安全集成的 API 范围。

securitySchemes 配置字段:

示例:

server:
  name: my-secure-api-server
  securitySchemes:
    - id: backendBasicAuth
      type: http
      scheme: basic
      defaultCredential: "service_user:p@$$wOrd"
    - id: backendBearerToken
      type: http
      scheme: bearer
      defaultCredential: "your_static_bearer_token_for_backend"
    - id: backendApiKeyHeader
      type: apiKey
      in: header
      name: X-Internal-ApiKey
      defaultCredential: "secret_backend_api_key"

为后端 API 调用应用认证 (requestTemplate.security)

定义认证方案后,您可以将其应用于 MCP Server 向后端 REST API 发出的请求。这在每个工具的 requestTemplate 中进行配置:

  • requestTemplate.security.id:引用在 ``server.securitySchemes 中定义的方案的 id
  • requestTemplate.security.credential:(可选) 允许您为此特定工具的后端调用覆盖方案中的 ``defaultCredential

示例:

tools:
  - name: fetch-sensitive-data
    description: "从需要 Bearer 令牌的后端服务获取敏感数据。"
    args: # ...
    requestTemplate:
      url: "https://api.internal.com/data"
      method: GET
      security:
        id: backendBearerToken # 使用 'backendBearerToken' 方案
        # credential: "override_token_for_this_tool_if_needed" # 如果需要,可为此工具覆盖令牌

透明凭证透传

最强大的新增功能之一是能够将来自客户端请求(例如,从 AI Agent 到 MCP Server)的凭证透明地传递到后端 API 调用(MCP Server 到实际的 REST API)。当后端 API 需要 AI 客户端拥有的用户特定认证时,此功能非常宝贵。

工作原理

**1. 客户端认证方案定义:MCP Server 需要知道客户端如何进行自我认证。这也通过 server.securitySchemes 中的一个方案来定义。

2. 工具级安全配置 ( tools[].security ):

  • id:引用客户端在调用此 MCP 工具时应使用的认证方案。MCP Server 将使用此方案来提取客户端的凭证。
  • passthrough:true:此标志启用透传机制。

3. 后端认证:如上所述的 requestTemplate.security 定义了透传凭证将如何应用于后端 API 调用。

示例:

假设一个 AI 客户端使用用户特定的 JWT Bearer 令牌调用您的 MCP 工具。您希望使用相同的令牌调用后端服务。

server:
  name: user-data-passthrough-server
  securitySchemes:
    - id: clientUserBearer # 客户端传入 Bearer 令牌的方案
      type: http
      scheme: bearer
    - id: backendServiceBearer # 后端 API 的方案 (也是 Bearer, 但可以不同)
      type: http
      scheme: bearer
      # 如果总是依赖透传,则此处无需 defaultCredential

tools:
  - name: get-user-profile
    description: "使用客户端提供的令牌获取用户个人资料。"
    security: # 客户端如何向此 MCP 工具进行认证的配置
      id: clientUserBearer   # MCP Server 期望客户端使用 Bearer 令牌
      passthrough: true     # 启用透传
    args: # ...
    requestTemplate:
      url: "https://api.user-profiles.com/me"
      method: GET
      security: # MCP Server 如何向后端 API 进行认证的配置
        id: backendServiceBearer # 透传的令牌将作为 Bearer 令牌发送到后端。

工作流程:

  1. AI 客户端调用 get-user-profile 工具,并提供一个 Authorization: Bearer <user_jwt_token> 请求头。

  2. Higress MCP Server 根据 tools[].security.id: clientUserBearer 提取 <user_jwt_token>。来自客户端的原始 Authorization 请求头被移除。

  3. 由于设置了 passthrough: true<user_jwt_token> 被指定为用于后端调用的凭证。

  4. 然后,MCP Server 使用 requestTemplate.security.id: backendServiceBearer 中定义的方案来格式化此 <user_jwt_token> 并将其发送到 https://api.user-profiles.com/me 端点 (即,它发送 Authorization: Bearer <user_jwt_token>)。

关于透传的重要说明:

  • 当 passthrough: true 时,requestTemplate.security.credential 中指定的任何 credential 都将被忽略。
  • MCP Server 会智能地从客户端请求中提取核心凭证部分(例如,从 “Bearer token” 中提取 token,从 “Basic base64value” 中提取 base64 部分),然后再进行透传。

带来的益处

这些新的认证功能提供了:

  • 增强的安全性:妥善保护与后端服务的交互。
  • 更高的灵活性:支持各种常见的认证模式。
  • 简化的集成:更容易与具有不同安全要求的 API 集成。
  • 无缝的用户上下文传播:透明地使用客户端提供的凭证进行后端调用,实现个性化的 API 交互。

我们相信这些增强功能将显著改善使用 Higress 和 MCP Server 构建的 AI 驱动应用程序的安全状况和集成能力。

通过 openapi-to-mcp 简化配置

为了进一步简化配置过程,最新版本的 openapi-to-mcp 工具(项目地址:GitHub【1】)现已支持将包含 securitySchemes 定义的 OpenAPI 文档直接转换为此 MCP Server 插件配置。如果您的 OpenAPI 规范已经描述了其安全要求,该工具可以生成相应的 server.securitySchemes 并将其链接到合适的工具,从而显著减少手动配置的工作量。

开始使用

如果您使用开源版 Higress 请更新您的 Higress MCP Server 插件,并参阅 MCP Server README 文档【2】 获取详细的配置说明和更多示例。

如果您使用企业版 Higress(阿里云 AI 网关),请参考我们的企业版产品文档【3】,我们提供了更易用的产品化封装,并提供全托管免运维的服务,以及 99.99% 的 SLA 可用性保障:

我们致力于将 Higress 打造成一个强大且开发者友好的 AI 原生 API 网关,能够对接 LLM API、MCP API 和 Agent API。敬请期待更多更新!

【1】GitHub

https://github.com/higress-group/openapi-to-mcpserver

【2】MCP Server README 文档

https://higress.cn/ai/mcp-server/

【3】企业版产品文档

https://help.aliyun.com/zh/api-gateway/ai-gateway/user-guide/mcp-services-management

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态理解大模型高性能优化丨前沿多模态模型开发与应用实战第七期

一、引言 在前序课程中&#xff0c;我们系统剖析了多模态理解大模型&#xff08;Qwen2.5-VL、DeepSeek-VL2&#xff09;的架构设计。鉴于此类模型训练需消耗千卡级算力与TB级数据&#xff0c;实际应用中绝大多数的用户场景均围绕推理部署展开&#xff0c;模型推理的效率影响着…

人脸识别技术合规备案最新政策详解

《人脸识别技术应用安全管理办法》将于2025年6月1日正式实施&#xff0c;该办法从技术应用、个人信息保护、技术替代、监管体系四方面构建了人脸识别技术的治理框架&#xff0c;旨在平衡技术发展与安全风险。 一、明确技术应用的边界 公共场所使用限制&#xff1a;仅在“维护公…

AStar低代码平台-脚本调用C#方法

修改报工表表单&#xff0c;右键定义弹出菜单&#xff0c;新增一个菜单项&#xff0c;并在点击事件脚本中编写调用脚本。 编译脚本&#xff0c;然后在模块代码里面定义这个方法&#xff1a; public async Task<int> on_call_import(DataRow curRow) {PrintDataRow(cur…

企业级RAG技术实战指南:从理论到落地的全景解析

前言 在大模型技术日新月异的今天&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术正成为企业突破AI应用瓶颈的关键利器。当传统AI系统还在处理结构化数据的泥潭中挣扎时&#xff0c;RAG技术已经打开了通向非结构化知识海洋的大门。这本《RAG技术实战指南》以独特的工…

【八股战神篇】RabbitMQ高频面试题

简述RabbitMQ五种模式 &#xff1f; 延伸 请介绍一下RabbitMQ的特点 延伸 简述RabbitMQ的发布与订阅模式 延伸 RabbitMQ 如何保证消息不丢失&#xff1f; 延伸 RabbitMQ 如何保证消息有序&#xff1f; 延伸 专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xf…

高阶数据结构——红黑树实现

目录 1.红黑树的概念 1.1 红黑树的规则&#xff1a; 1.2 红黑树的效率 2.红黑树的实现 2.1 红黑树的结构 2.2 红黑树的插入 2.2.1 不旋转只变色&#xff08;无论c是p的左还是右&#xff0c;p是g的左还是右&#xff0c;都是一样的变色处理方式&#xff09; 2.2.2 单旋变色…

安卓学习笔记-声明式UI

声明式UI Jetpack Compose 是 Google 推出的用于构建 Android UI 的现代化工具包。它采用 声明式编程模型&#xff08;Declarative UI&#xff09;&#xff0c;用 Kotlin 编写&#xff0c;用于替代传统的 XML View 的方式。一句话概括&#xff1a;Jetpack Compose 用 Kotlin…

AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?

引言:从数值预报到AI大模型的范式变革 传统的天气预报依赖于数值天气预报(NWP, Numerical Weather Prediction),通过求解大气动力学方程(如Navier-Stokes方程)进行物理模拟。然而,NWP计算成本极高,依赖超级计算机,且难以处理小尺度天气现象(如短时强降水)。 近年来…

数据结构第3章 线性表 (竟成)

目录 第 3 章 线性表 3.1 线性表的基本概念 3.1.1 线性表的定义 3.1.2 线性表的基本操作 3.1.3 线性表的分类 3.1.4 习题精编 3.2 线性表的顺序存储 3.2.1 顺序表的定义 3.2.2 顺序表基本操作的实现 1.顺序表初始化 2.顺序表求表长 3.顺序表按位查找 4.顺序表按值查找 5.顺序表…

JAVA面试复习知识点

面试中遇到的题目&#xff0c;记录复习&#xff08;持续更新&#xff09; Java基础 1.String的最大长度 https://www.cnblogs.com/wupeixuan/p/12187756.html 2.集合 Collection接口的实现&#xff1a; List接口&#xff1a;ArraryList、LinkedList、Vector Set接口&#xff1a…

项目中的流程管理之Power相关流程管理

一、低功耗设计架构规划&#xff08;Power Plan&#xff09;   低功耗设计的起点是架构级的电源策略规划&#xff0c;主要包括&#xff1a;   电源域划分   基于功能模块的活跃度划分多电压域&#xff08;Multi-VDD&#xff09;&#xff0c;非关键模块采用低电压&#xf…

SLOT:测试时样本专属语言模型优化,让大模型推理更精准!

SLOT&#xff1a;测试时样本专属语言模型优化&#xff0c;让大模型推理更精准&#xff01; 大语言模型&#xff08;LLM&#xff09;在复杂指令处理上常显不足&#xff0c;本文提出SLOT方法&#xff0c;通过轻量级测试时优化&#xff0c;让模型更贴合单个提示。实验显示&#x…

《计算机组成原理》第 10 章 - 控制单元的设计

目录 10.1 组合逻辑设计 10.1.1 组合逻辑控制单元框图 10.1.2 微操作的节拍安排 10.1.3 组合逻辑设计步骤 10.2 微程序设计 10.2.1 微程序设计思想的产生 10.2.2 微程序控制单元框图及工作原理 10.2.3 微指令的编码方式 1. 直接编码&#xff08;水平型&#xff09; 2.…

【数据结构与算法】模拟

成熟不是为了走向复杂&#xff0c;而是为了抵达天真&#xff1b;不是为了变得深沉&#xff0c;而是为了保持清醒。 前言 这是我自己刷算法题的第五篇博客总结。 上一期笔记是关于前缀和算法&#xff1a; 【数据结构与算法】前缀和-CSDN博客https://blog.csdn.net/hsy1603914691…

PyTorch入门-torchvision

torchvision torchvision 是 PyTorch 的一个重要扩展库&#xff0c;专门针对计算机视觉任务设计。它提供了丰富的预训练模型、常用数据集、图像变换工具和计算机视觉组件&#xff0c;大大简化了视觉相关深度学习项目的开发流程。 我们可以在Pytorch的官网找到torchvision的文…

18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的字符串是什么&#xff1f;1、例子1&#xff1a;多语言支持演示2、例子2&#xff1a;字符串不可变性验证3、答案&#xff1a;&#xff08;1&#xff09…

5月27日复盘-Transformer介绍

5月27日复盘 二、层归一化 层归一化&#xff0c;Layer Normalization。 Layer Normalizatioh和Batch Normalization都是用来规范化中间特征分布&#xff0c;稳定和加速神经网络训练的&#xff0c;但它们在处理方式、应用场景和结构上有本质区别。 1. 核心区别 特征BatchNo…

MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?

MyBatis-Plus-Kit &#x1f680; MyBatis-Plus-Kit 是基于MyBatis-Plus的增强组件&#xff0c;专注于提升开发效率&#xff0c;支持零侵入、即插即用的能力扩展。它聚焦于 免写 Controller、代码一键生成、通用响应封装 等核心场景&#xff0c;让您只需专注业务建模&#xff0…

实时数仓flick+clickhouse启动命令

1、启动zookeeper zk.sh start 2、启动DFS&#xff0c;Hadoop集群 start-dfs.sh 3、启动yarn start-yarn.sh 4、启动kafka 启动Kafka集群 bin/kafka-server-start.sh -daemon config/server.properties 查看Kafka topic 列表 bin/kafka-topics.sh --bootstrap-server local…

【Git】Commit Hash vs Change-Id

文章目录 1、Commit 号2、Change-Id 号3、区别与联系4、实际场景示例5、为什么需要两者&#xff1f;6、总结附录——Gerrit 在 Git 和代码审查工具&#xff08;如 Gerrit&#xff09;中&#xff0c;Commit 号&#xff08;Commit Hash&#xff09; 和 Change-Id 号 是两个不同的…