浏览 AI 知识库

MCP 401 和 403:区分登录、Token、scope 和资源权限

MCP 返回 401 时先检查身份是否被接受,403 则要看 Token 的 scope 和目标资源权限。两种状态都只换 Key,会把认证和授权混成一个问题。

先认准故障

从 401 变成 403,不是同一个错误换了数字

远程 MCP 返回 401 后用户换了三次 Token;改成 403 又继续换 Key。实际上 401 是登录无效,403 是 Token 已识别但缺少目标资源 scope。

  • 401 与 403 使用不同诊断路径
  • Token 内容与日志已脱敏
  • 授权只提升到任务所需范围
按现象分支

MCP 401 403,先从“持续 401”这一类现象查起

持续 401

原因
凭证缺失、过期、类型错误、受众或签名不匹配。
怎么改
检查客户端实际发送的认证方式、令牌来源与过期,不打印完整值;重新授权而非随机换 Key。

登录后 403

原因
用户、组织、scope、资源 ACL、网络或策略不允许。
怎么改
记录身份、目标资源和动作,对照最小所需 scope 与资源权限,使用服务端审计日志。

同一 Token 部分资源成功

原因
认证有效,但资源级权限或租户范围不同。
怎么改
比较成功与失败资源的所有者、组织、角色和路径,避免扩大成全局权限。

浏览器授权成功但客户端仍失败

原因
回调、状态、缓存、配置作用域或旧令牌未更新。
怎么改
确认当前客户端读取的新授权,清理安全缓存并重新加载,保存时间线。
本例材料

复测前,固定原始现象、环境和目标

需要确认本例内容
现有材料同一端点两次响应:401 `invalid_token`,更新 Token 后 403 `insufficient_scope`;requestId 均保存。
不能越过的边界认证身份与授权权限分开;核对 Token 目标、过期、scope 和资源 ACL;凭证不写日志。
要交付的结果认证授权诊断记录
状态码对照

同一个 Token 成功和失败时,先比较资源,不要立刻换 Key

请求状态优先检查不能直接推断
列出公共工具200认证、Server 和基础 scope 已生效不代表可访问私有资源
读取组织项目401Token 是否发送、过期、类型和受众不一定是账号被封
读取同组织另一资源403角色、项目 ACL、scope 和资源路径不一定要换更大权限
浏览器能用,Client 403403Client 使用的账号、缓存和作用域不代表 Server 拒绝所有请求

状态码语义受具体 Server 实现影响;最终判断必须结合原始响应、文档和服务端审计日志。

修复前后

MCP 401 403:按原条件复测的结果

Before

原始现象

所有失败都被称为“Key 不对”,处理动作只有生成新 Key。

After

认证授权诊断记录

第一次通过重新登录解决 401;第二次保留当前 Token,仅申请只读 scope 后 200。诊断记录写明身份、Token audience、scope、资源和时间,不扩大到管理员权限。

验收方式

认证授权诊断记录通过哪些检查才算完成

进一步核对

安全与排错:参考资料与核对入口