编程 agent 凭据不等于身份:授权链、作用域与证据留存

2026-09-08 06:11:17

AI agent 有 OAuth token,但它有身份吗?

OAuth 能证明请求可以到达某个资源,但它本身不告诉运营者持有 token 的角色的完整故事。一旦软件能规划、调用工具、重试、跨系统行动,问题就不再只是"这个请求被认证了吗",还要问:

  • 哪个 agent 在行动?
  • 在谁的授权下?
  • 为了什么目的?
  • 针对哪个目标?
  • 行动后留下什么证据?

如果系统不读 agent 的 prompt 就回答不了这些问题,它还没有运营身份模型——它只有一个凭据。

Token 是权限,不是全部身份

OAuth 仍是 agent 的关键基础设施。当前 MCP 授权规范构建在 OAuth 2.1、Protected Resource Metadata、Client ID Metadata Documents、audience 绑定和最小权限 scope 之上,还强化了 issuer 校验、定义了 step-up 授权、禁止 token 透传。这些控制回答了:token 是否给这个资源、用户批准了哪些权限、凭据过期没、资源服务器是否接受它的 audience。

但 token 仍是更大系统里的一个构件:它能携带身份声明,却不会自动给身份以生命周期、所有者、目的或可用的审计轨迹。运营身份是 token 周围的连续性——它说明凭据签发前后是同一个 agent,且它的权限可被理解、可被撤销。

借用人类身份会毁掉记录

让 agent 动起来最快的方式往往是借人类凭据:把 API key 拷进环境、复用浏览器会话、给一个为员工创建的 access token。于是日志说人行动了,其实是 agent。凭据可能带着那个人的全部权限,而任务只需要两个;撤销 agent 等于撤销那个人;后来的审查者分不清一个动作是批准、推断、重试还是从长会话继承来的。这是身份版的共享密码——OWASP 2026 Agentic Top 10 把身份与权限滥用列为独立的 agentic 风险。

实践建议

  • 保持授权记录小而可解析:稳定 agent_id、可见的授权链、有界的目的与目标、短命凭据、可撤销、行动后证据;
  • 记录模型示例:{agent_id: "qa-runner", authority: {type: "workspace", id: "acme-staging"}, purpose: "verify owned checkout flow", targets: [...], scopes: [...], expires_at: ...}——目标是让 token 能解析回一条小到可检查、具体到可执行的记录;
  • 别借人类身份:agent 身份归 agent,权限留在组织侧,每个边界显式、有界、可撤销、能返回证据。

来源:Your AI Agent Has an OAuth Token. Does It Have an Identity? - DEV Community

复制全文 生成海报 AI 安全 OAuth 身份

推荐文章

程序员茄子在线接单