SafeLine MCP Server 的 MCP 客户端 Bearer Token 如何初始化与轮换?

发布时间:2026/9/14 8:38:48

SafeLine MCP Server 的 MCP 客户端 Bearer Token 如何初始化与轮换? SafeLine MCP Server 的 MCP 客户端 Bearer Token 如何初始化与轮换【免费下载链接】SafeLineSafeLine is a self-hosted WAF(Web Application Firewall) / reverse proxy to protect your web apps from attacks and exploits.项目地址: https://gitcode.com/GitHub_Trending/sa/SafeLine在部署 SafeLine MCP Server 时需要为 MCP 客户端即连接该服务的 AI 客户端启用访问认证先生成一次 Bearer Token 供客户端携带之后在需要作废旧凭据时执行一次显式轮换。这篇文章给出这两步的具体命令、状态文件位置和验证方式。先说清楚范围MCP 客户端认证与下游 SafeLine 实例的 API Token 相互独立。后者按实例存放在token_file指向的文件里只用于 MCP Server 访问 SafeLine 管理 API不会暴露给 MCP 客户端。本文只处理前者的初始化auth init与轮换auth rotate。认证机制Token 只在初始化时显示一次启用 MCP 认证后Token 由crypto/rand生成一个 256-bit 随机值前缀为slmcp_。命令只在执行时把明文打印一次状态文件里只保存 SHA-256 哈希与创建时间文件权限为0600。服务正常重启只会读取该状态不会修改或再次打印 Token实现见 mcp_server/internal/auth/auth.go。客户端之后在每次 MCP 请求中携带该 TokenAuthorization: Bearer slmcp_...其中slmcp_...是auth init/auth rotate输出的实际 Token文档中此处仅为格式示例。内置监听器是明文 HTTPDocker Compose 默认把端口发布在127.0.0.1就是这个静态 Bearer 门闩不被放到网络上明文传输的原因。若要从其他机器访问README 明确要求把端点放在可信的 HTTPS 终止网关之后不要在不受信任的网络上把MCP_PUBLISH_ADDRESS设为0.0.0.0而不做 TLS 终止。准备启用认证并确认状态文件位置Docker Compose 路径下mcp_server/docker-compose.yml容器内状态文件固定为/var/lib/safeline-mcp/auth.json由宿主机${SAFELINE_MCP_STATE_DIR:-./state}目录绑定挂载提供MCP_AUTH_ENABLED默认取宿主机环境变量的值未设置时为false。在mcp_server/目录下操作。先按 mcp_server/README.md 的 Docker 部署流程准备好目录与镜像docker compose build install -d -m 700 /etc/safeline-mcp/secrets /var/lib/safeline-mcp install -m 600 /path/to/production-a.token /etc/safeline-mcp/secrets/production-a.token export SAFELINE_MCP_SECRETS_DIR/etc/safeline-mcp/secrets export SAFELINE_MCP_STATE_DIR/var/lib/safeline-mcp其中/path/to/production-a.token是示例换成你自己每个 SafeLine 实例的管理员 API Token 文件。install命令会创建上述受保护的部署目录700和 Token 文件600——这是 Compose 声明create_host_path: false的前提Compose 拒绝自动创建缺失的绑定挂载路径。若只用./secrets与./state本地开发路径README 要求先以相同权限手动创建这两个目录再运行 Compose。注意两个前提细节状态文件所在目录必须没有 group/other 权限状态文件本身必须是权限0600的普通文件否则Load会拒绝加载并报invalid MCP authentication stateCompose 中的SAFELINE_MCP_STATE_DIR指向的宿主目录就是state的落点初始化前确认该目录存在且权限正确。初始化执行一次 auth init 并保存 Token在同一个 shell 会话里执行export需要延续到后面的docker compose up容器才会在运行态启用认证export MCP_AUTH_ENABLEDtrue docker compose run --rm mcp_server auth init输出示例Token 为随机值此处仅展示文档给出的形式MCP bearer token (shown once; save it now): slmcp_...命令结束后把打印的 Token 保存下来——这是明文唯一可见的时刻。判断初始化是否成功的依据输出中出现一次slmcp_前缀的 Token状态文件已生成宿主机${SAFELINE_MCP_STATE_DIR}目录下的auth.json权限0600内容只有version、token_hash、created_at不含明文再次运行同样的auth init不会重新生成而是提示MCP authentication is already initialized at state file; token was not changed.——init是一次性操作重复执行不改写已有状态。如果启用了认证但状态尚未初始化就启动服务README 明确说明服务器会拒绝启动mcp_server/main.go 中的报错会直接给出该跑的命令例如MCP authentication is enabled but not initialized; run mcp-server auth init --state-file /var/lib/safeline-mcp/auth.json: invalid MCP authentication state: ...之后启动服务并验证客户端侧行为docker compose up -d不带 Token 或携带错误 Token 的 MCP 请求会被中间件拒绝返回401 Unauthorized响应头带WWW-Authenticate: Bearer realmsafeline-mcp见 mcp_server/internal/auth/auth.go 的Middleware。服务重启后日志不会再次出现 Token 明文这与 README「重启只读状态、不改动不打印 Token」的描述一致。可选分支不用 Docker直接用 Go 运行README 给出本地路径的做法先选定一个持久的状态文件再初始化go build -o mcp-server . export MCP_AUTH_ENABLEDtrue export MCP_AUTH_STATE_FILE$PWD/state/auth.json ./mcp-server auth init ./mcp-server --config ./config.yamlauth子命令的完整用法为mcp-server auth init|rotate [--state-file path]不传--state-file时取MCP_AUTH_STATE_FILE环境变量再取不到则用默认路径/var/lib/safeline-mcp/auth.json。轮换auth rotate 并重启服务需要作废旧 Token 时在mcp_server/目录下执行docker compose run --rm mcp_server auth rotaterotate的前提是状态文件已存在且有效它会先Load现有状态成功后才生成新 Token 并整体替换状态文件。它同样只把新 Token 打印一次。与init不同rotate可以重复执行每次都产出一个新值并使旧值失效。README 给出的轮换注意事项轮换在服务重启后才让旧 Token 失效拿到新 Token 后把docker compose up -d重新拉起或重启容器再让客户端改用新 Tokenauth rotate必须作为一次串行化的部署操作执行不支持并发的轮换命令轮换期间客户端会短暂持有两个都不能用的凭据旧的重启后失效、新的还未下发这是一个需要排进变更窗口的动作。限制与边界这套静态 Bearer 门闩面向自托管部署README 明确说明它「不呈现为完整的 MCP OAuth 2.1 实现」不存在全局SAFELINE_API_TOKEN那是下游实例凭据且每个实例各用一份 Token 文件状态文件一旦权限不符合要求如出现 group/other 可读位会被判为无效状态服务会拒绝启动需要恢复到0600的普通文件与0700的目录初始化/轮换命令只负责凭据本身MCP 端点地址、实例映射display_name到instance_id由 mcp_server/config.yaml 与instances配置决定与 Token 管理互不干涉。下一步按 README 的部署顺序走即可保存好auth init输出的 Tokendocker compose up -d启动服务让客户端用Authorization: Bearer token访问POST /mcp。【免费下载链接】SafeLineSafeLine is a self-hosted WAF(Web Application Firewall) / reverse proxy to protect your web apps from attacks and exploits.项目地址: https://gitcode.com/GitHub_Trending/sa/SafeLine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/14 8:33:48

SAP ABAP CDS Projection View四种变体解析与实战

1. 项目概述:CDS Projection View的演进与实战价值 在SAP ABAP开发领域,CDS(Core Data Services)Projection View作为数据模型的核心构建单元,其设计模式直接影响着RAP(ABAP RESTful Application Programmi…

2026/9/14 8:33:48

非标电压供电方案选型指南:变压器、变频电源与UPS实战决策

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 9:39:17

字符串乘方问题全解:KMP前缀函数、循环节判定与多语言实现

刷过 OJ 算法题的人,对“字符串乘方”这四个字应该不陌生。尤其 POJ 2406 Power Strings 这道经典题,几乎每个学 KMP 的人都被它虐过一遍。它的核心问题一句话就能讲明白:给定一个字符串,判断它能不能由某个更短的字符串重复若干次…

2026/9/14 9:39:17

UART、TTL、RS-232、RS-485 三层解耦实战指南

1. 这不是“名词解释题”,而是嵌入式工程师每天要面对的“物理层通关手册”你拆过路由器,用CH340模块给ESP32烧过固件,调试STM32时串口助手突然收不到数据,或者在工业现场接RS-485设备发现通信距离一超300米就丢包——这些场景里反…

2026/9/14 9:34:17

TF-IDF算法原理与Python实战:文本特征提取指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码