☰
PanWatch PAT 个人访问令牌详解:为 MCP 端点签发最小权限凭证的完整指南
2026/10/2 17:21:19 网站建设 项目流程

PanWatch PAT 个人访问令牌详解:为 MCP 端点签发最小权限凭证的完整指南

【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch

PanWatch(盯盘侠)是一款覆盖 A股/港股/美股的 AI 盯盘工具,提供持仓分析、实时提醒与自动报告。当你要把 PanWatch 的行情数据接入 Claude 等 MCP 客户端时,需要为/mcp端点签发一个PAT(个人访问令牌)。本文带你从零了解 PAT 的签发、使用与安全设计——它采用最小权限原则,令牌只读、可随时吊销,是外部程序接入 PanWatch 的安全凭证。

什么是 PAT:MCP 端点的专用"门禁卡"

PanWatch 内置了一个轻量 MCP(Model Context Protocol)服务,挂在顶层 /mcp 端点,把助手的全部只读工具(查询行情、K线、持仓、提醒等)以 JSON-RPC 形式开放。外部客户端访问时必须携带一张"门禁卡"——PAT 令牌,其明文格式类似:

pwmcp_a1b2c3d4e5f6...(pwmcp_ 前缀 + 256bit 随机熵,共约 43 字符)

前缀pwmcp_的作用类似 GitHub 的ghp_:一眼识别这是 PanWatch 的 MCP 令牌,也方便 secret 扫描器在代码库中揪出泄露的凭证(见 pat.py)。

为什么不复用登录会话:JWT 与 PAT 分流

你可能会问:既然登录系统已有 JWT 令牌,为什么还要单独搞一套 PAT?

核心原因是鉴权分流(设计说明见 pat.py 模块注释):

维度登录 JWTMCP PAT
用途网页登录会话分发给外部 MCP 客户端的长期凭据
生命周期会话态、30 天可设 1~3650 天或永不过期
吊销能力不支持单独吊销一键吊销,立即失效
权限范围全站仅mcp:read(只读)

分流是双向的:PAT 不是合法 JWT,进不了普通 API;JWT 也过不了 MCP 端点的 PAT 校验。这保证了即便登录令牌泄露,也拿不到 MCP 数据通道;反之亦然。

三步签发并使用 PAT

操作入口在设置页 → MCP 令牌区块(前端组件 PatSection.tsx),整个流程不到一分钟:

1. 创建令牌

输入一个便于识别的名称(如claude-desktop),点击创建。后端默认签发mcp:read只读 scope、90 天有效期(见 pats.py)。

2. 立即复制明文

⚠️明文令牌只在创建成功时返回一次,页面会以醒目提示框展示并附复制按钮;此后列表里只保留前 14 位前缀(如pwmcp_a1b2c3d4…)。请务必第一时间保存到密码管理器中。

3. 配置 MCP 客户端

在 MCP 客户端中把 URL 指向http://你的地址/mcp,请求头带上Authorization: Bearer pwmcp_...。端点支持initialize、tools/list、tools/call等标准方法(处理逻辑见 mcp.py)。

安全设计拆解:这个 PAT 凭什么"最小权限"

🔒 明文永不落库

创建时系统只把令牌的sha256 摘要存入token_hash字段(数据模型见 models.py)。即使数据库泄露,攻击者拿到的也是不可逆的哈希。而校验时特意不用 bcrypt——因为 256bit 随机熵的令牌不像密码需要抗暴破,sha256 加常数时间比较既快又安全(每次 tool call 都要校验,性能很重要)。

⏱️ 防时序攻击

校验使用hmac.compare_digest做常数时间比较(verify_pat_hash),避免攻击者通过响应时间差逐字节猜解令牌。

📖 只读 + 白名单双重保险

  • scope 白名单里只有mcp:read,请求mcp:write等会被直接拒绝(pats.py);
  • MCP 端点只暴露助手工具的只读集合,未知工具名直接报错(mcp.py)。

🚫 令牌不能管理令牌

PAT 管理接口(/api/pats)挂在**需登录(JWT)**的路由下——PAT 本身无法用来创建或吊销 PAT,防止令牌泄露后自我续期、自我升权(见 pats.py 注释)。

📋 全程审计 + 一键吊销

每次 MCP 工具调用都会写入审计日志:工具名、状态、脱敏参数摘要、耗时、来源 IP(模型定义见 MCPCallLog),日志保留 30 天。发现异常?在设置页点一下"吊销",MCP 端点随即拒绝该令牌(相关回归测试见 test_pats_api.py)。

使用最佳实践

  1. 一客户端一令牌:给 Claude Desktop、Cursor 等分别签发,并在名称里标注用途,吊销时互不影响;
  2. 设置有效期:默认 90 天,到期自动失效,比"永不过期"更安全;
  3. 定期查看"最后使用时间":列表中展示了最近使用时间与 IP,长期不用或来源陌生的令牌建议直接吊销;
  4. 别把令牌提交进代码库:pwmcp_前缀正是为了被 secret 扫描器识别,若不小心入库,第一时间吊销重发。

PanWatch 的 PAT 体系把"最小权限"落到了实处:只读 scope、一次明文、哈希存储、常数时间校验、独立审计、秒级吊销。理解了这套设计,你不仅能让 MCP 客户端安全接入 PanWatch 的行情与提醒能力,也能把它当作自建服务的令牌鉴权范本。更多端点与工具实现细节,可继续查阅 MCP 服务端 与 PAT 工具模块。

【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询