来源:互联网 更新时间:2026-06-28 14:17
企业级部署 MCP 服务器时,授权与安全是绕不开的硬骨头。OAuth2 框架正好能帮上大忙,让权限控制变得清晰可控。
核心关注点有三个:
本地跑 MCP 服务器时,用 STDIO 传输方式就够用。但如果想让外部客户端访问,就得暴露标准的 HTTP 接口。私有环境可能不需要严格认证,但企业级部署就不一样了——接口的安全和权限把控是基本要求。2025 年 3 月发布的最新 MCP 规范,正是借助 OAuth2 框架来打底,解决这些安全痛点。
先简单回顾一下 OAuth2 的角色分配。在规范草案中,MCP 服务器同时扮演资源服务器和授权服务器两个角色:
Authorization 请求头,这个头里必须带着 OAuth2 的 access_token(令牌),代表客户端的“通行证”。令牌通常是 JWT 格式,也可能是一个随机字符串。如果令牌缺失、无效(比如过期、不是发给本服务器的),请求会被直接拒绝。正常调用长这样:curl https://mcp.example.com/sse -H "Authorization: Bearer <有效的 access token>"
access_token。发放令牌前,服务器会校验客户端凭据,有时还要校验访问者的身份。授权服务器决定令牌的有效期、权限范围、目标受众等属性。好消息是,用 Spring Security 和 Spring Authorization Server,可以很方便地为现有的 Spring MCP 服务器同时添加上面这两项能力。
下面以官方示例仓库中的“天气”MCP 工具为例,演示如何集成 OAuth2,重点让服务器端能签发和校验令牌(客户端部分暂时不展开)。
首先,在 pom.xml 里添加必要的依赖:
org.springframework.boot
spring-boot-starter-oauth2-resource-server
org.springframework.boot
spring-boot-starter-oauth2-authorization-server
然后在 application.properties 中配置一个简单的 OAuth2 客户端,方便后续请求令牌:
spring.security.oauth2.authorizationserver.client.oidc-client.registration.client-id=mcp-client
spring.security.oauth2.authorizationserver.client.oidc-client.registration.client-secret={noop}secret
spring.security.oauth2.authorizationserver.client.oidc-client.registration.client-authentication-methods=client_secret_basic
spring.security.oauth2.authorizationserver.client.oidc-client.registration.authorization-grant-types=client_credentials
这样配置后,可以用 POST 请求直接与授权服务器交互,无需浏览器,直接用配置好的 secret 作为凭据即可。最后一步是开启授权服务器和资源服务器功能。通常需要新增一个安全配置类,比如 SecurityConfiguration:
import static org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer.authorizationServer;
@Configuration
@EnableWebSecurity
class SecurityConfiguration {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
.with(authorizationServer(), Customizer.withDefaults())
.oauth2ResourceServer(resource -> resource.jwt(Customizer.withDefaults()))
.csrf(CsrfConfigurer::disable)
.cors(Customizer.withDefaults())
.build();
}
}
这个过滤链做了几件关键的事:
access_token。配置完成后,不带令牌的请求会直接被拒绝,返回 401 未授权:
curl http://localhost:8080/sse --fail-with-body
# 返回:
# curl: (22) The requested URL returned error: 401
要正常使用 MCP 服务器,得先获取一个 access_token。使用 client_credentials 授权模式(适用于机器到机器、服务账号场景):
curl -XPOST http://localhost:8080/oauth2/token --data grant_type=client_credentials --user mcp-client:secret
# 返回:
# {"access_token":"","token_type":"Bearer","expires_in":299}
拿到 access_token(一般以“ey”开头)后,就可以带上它正常请求服务器了:
curl http://localhost:8080/sse -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# 服务器响应内容
当然,你也可以直接在 MCP Inspector 工具里粘贴这个令牌——从菜单的 Authentication > Bearer 处输入令牌,然后连接即可。
archiveofourown 实战指南:常见用法整理
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
电视剧《小欢喜》剧情介绍
如何在夸克浏览器中开启网页视频的倍速播放功能?
作家助手如何上传自制封面 作家助手如何设置小说的封面
全链网:黄金价格因美元的走强及利率担忧而下跌
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
有寓意的易经网名男生(精选100个)
植物娘大战僵尸电脑端与手机端存档转移的方法
网石18禁MMO《RAVEN2:渡鸦》大型更新推出全新职业“军阀”
动漫《柚木家的四兄弟》剧情介绍
《梦幻西游》159五开五门怎么搭配-159五开五门常见搭配
拼多多品牌好货是官方店铺吗?拼多多品牌好货是官方还是自营店铺
SpaceX狂揽AI人才,马斯克亲自面试且不看简历背景
腾讯元宝怎么用来分析股票基金的基本面信息?
美好的简约网名男生(精选100个)
独家/李宰旭入伍前「登上孤岛服役」 惊见前辈裸体:忍不住笑了
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc