Skip to main content

Module auth

Module auth 

Source
Expand description

MCP 请求鉴权:bearer token → 已认证主体。

流程(每请求):

  1. axum from_fn 中间件 mcp_auth_middleware 解析 Authorization: Bearer ygg_...
  2. SHA-256 哈希后在 mcp_tokens 表常量查找未撤销、未过期的行;
  3. 命中则把 McpPrincipal { user_id, scope, token_id } 注入 request.extensions, 并异步刷新 last_used_at
  4. 未命中/缺失 → 401(不区分原因,避免探测)。

Origin→403、协议版本头、体积上限由 rmcp 的 StreamableHttpServerConfig 内置, 本模块只管 bearer 鉴权。McpPrincipal 经 rmcp 的 Extension<http::request::Parts> 提取器在工具内读取(见 server.rs)。

Structs§

McpPrincipal
已认证主体:由中间件注入 request.extensions,工具经 Extension 提取器读取。

Constants§

LAST_USED_REFRESH_SECS 🔒
last_used_at 刷新节流:同一令牌的 UPDATE 至少间隔 60s,避免高频请求 每次都写库。窗口外才刷新,窗口内跳过(best-effort,失败静默)。
TOKEN_PREFIX
Bearer token 前缀(明文形式以 ygg_ 起头,便于人眼识别与日志脱敏)。

Statics§

MCP_LIMITER 🔒
MCP 鉴权中间件:无 bearer 或 token 无效 → 401;否则注入 McpPrincipal。
MCP_UPLOAD_LIMITER 🔒
MCP 上传专用限流(与 MCP_LIMITER 隔离):上传是重操作(转码 + 落盘), 单独配额避免一个高频令牌的普通请求耗尽上传额度,反之亦然。 阈值经 RATE_LIMIT_MCP_UPLOAD_PER_SEC / _BURST 可调(默认 2/s, burst 5)。

Functions§

check_mcp_upload_limit 🔒
bearer 端点专用:按 token_id 检查上传配额。超限返回 Err(脱敏消息)。
extract_bearer
从 Authorization 头解析 bearer 明文(去前缀后返回完整 token 字符串)。 非 bearer、缺前缀、解码失败统一返回 None。
hash_token
明文 token → SHA-256 hex(与 mcp_tokens.token_hash 列一致,用于 DB 查找)。
mcp_auth_middleware
mcp_rate_burst 🔒
mcp_rate_per_sec 🔒
mcp_upload_rate_burst 🔒
mcp_upload_rate_per_sec 🔒
resolve_bearer_principal 🔒
bearer 端点鉴权:从 Authorization 头解析 bearer → 查库解析主体。
resolve_principal 🔒
查库解析 token → 主体;未撤销、未过期才返回 Some。