用户点击「断开 Agent 访问」后,正在运行的 Agent 可能仍持有效 access token、已缓存 tool 结果、甚至内存中的 PII。持续验证要求:信任随时间衰减,撤销信号必须在可接受窗口内生效。本文对照 IAM 会话吊销 与 零信任持续验证,聚焦 Agent 长会话场景。
草案标注:OpenID CAEP(Continuous Access Evaluation Profile)与 Shared Signals Framework (SSF) 截至 2026-06 仍为 OpenID 工作组草案——下文描述规范意图;厂商实现细节以官方文档为准,不编造 IdP 推送 payload。
一、Agent 撤销的特殊性
| 普通 Web 会话 | Agent 会话 |
|---|---|
| 浏览器 cookie 吊销即可 | 后台进程无 cookie |
| 用户关 tab 即停 | Agent 可跑数小时 |
| 少缓存敏感数据 | tool 结果常含 PII 进 context |
| 单 RS | 多 MCP Server / 多 API |
撤销链:IdP revoke user session → Gateway 停止 Token Exchange → 吊销 outstanding delegated tokens → Agent 进程终止或降级 → 清理缓存。
二、短 TTL + 轮询 vs 推送
| 机制 | 撤销窗口 | 成本 | Agent 适用 |
|---|---|---|---|
| 短 access token(5–15min) | ≤ TTL | 低 | 基线 |
| Token Introspection 每次调用 | 实时 | 高延迟 | 高敏 API |
| Refresh rotation | refresh 链断裂 | 中 | Gateway 层 |
| CAEP 推送(RFC 8935) | 秒级(理想) | 需 Receiver | 企业 IdP |
推荐组合:delegated token TTL 5–15min + Gateway 监听 CAEP(若 IdP 支持)+ Agent 每 N 分钟向 Gateway heartbeat 验证委托仍有效。
sequenceDiagram
participant IdP
participant GW as Agent Gateway
participant Agent
IdP->>GW: CAEP session-revoked SET
GW->>GW: 标记 user delegation revoked
Agent->>GW: heartbeat
GW->>Agent: 401 delegation_revoked
Agent->>Agent: 停止 tool + 清缓存
三、CAEP 事件类型(草案意图)
摘自 OpenID CAEP 草案概念(截至 2026-06 draft 状态):
| 事件 | Agent 动作 |
|---|---|
session-revoked |
停止 Exchange;杀 long-running task |
credential-change |
同上 + 要求用户 re-link |
token-claims-change |
缩小 scope;可能终止当前 task |
risk-level-change |
触发 HITL 或暂停 |
SET(RFC 8417 Security Event Token)为 JWT 格式事件载体——Delivery 见 RFC 8935(推)/ 8936(拉)。
无法实测 CAEP 推送时:生产仍依赖短 TTL;CAEP 作增量加速。
四、Agent 缓存与 PII
坑:用户 revoke 后,Agent 内存 / Redis 中仍有邮件正文。
| 缓解 | 说明 |
|---|---|
| TTL 缓存 | tool 结果 cache ≤ delegated token TTL |
| revoke 钩子 | Gateway 发 pub/sub → Agent flush cache key prefix=user_sub |
| 最小 retention | 不把完整 PII 写磁盘 |
| 加密 ephemeral | 必须落盘则 AES-GCM + 密钥随 session 销毁 |
与 零信任数据安全 一致:撤销 = 访问权 + 数据副本清理。
五、与 Refresh Token Rotation 联动
Gateway 持 user refresh token 时,用户全局 logout 应使
refresh family 失效(见 IAM
07)。下一次 Agent 请求 Exchange 时 Gateway refresh 失败
→ Agent 立即收到 delegation_unavailable。
六、Multi-Server 撤销
用户 revoke 「Git Agent」但保留 「Calendar Agent」——委托记录需 per-agent_id 粒度,非仅 user session 全局 kill(除非用户选「全部断开」)。
七、实现清单
八、边界
- 不编造 Microsoft/Google CAEP 实际 JSON 样例
- CAEP 互操作仍在演进
九、heartbeat 契约
Agent 定期 heartbeat;401 revoked 则停 tool + 清 cache。
十、Revoke SLO
无 CAEP 时瓶颈 = access token TTL(建议 ≤15min)。
十一、Game day
季度 drill 随机 revoke 测 Agent 停止时间。
上一篇:MCP 供应链
下一篇:审计与归因
参考资料
- OpenID Foundation, Continuous Access Evaluation Profile(草案,2026-06)
- OpenID Foundation, Shared Signals Framework(草案,2026-06)
- IETF RFC 8417, Security Event Token (SET)
- IETF RFC 8935 / RFC 8936, SET Delivery
- 会话吊销
- 持续验证
读完这篇,下一步读什么
优先读同系列或同问题的下一篇,把单篇消费变成主题集群。
【Agent 身份与安全】MCP 架构与安全基线
Model Context Protocol 的 Host/Client/Server 三角、stdio 与 Streamable HTTP Transport 安全差异、OAuth 2.1 for MCP 草案边界,以及多 Server secret 隔离与 tool 攻击面。
【零信任安全架构】持续验证 vs 一次性认证:信号流、会话风险和策略降级
零信任把认证从'登录时一次'变成了'整个会话期间的持续评估'。但'持续'在工程中既不可能是'每个请求都完整评估',也不应该是'会话期间不重新评估'。本文回答持续验证的工程实现:什么频率叫持续、当风险信号变化时如何降级或撤销现有会话、以及 OpenID CAEP 协议的草案现状。
【Agent 身份与安全】Agent 身份谱系:从 API Key 到委托 Token
四代 Agent 身份模型:API Key、OAuth 用户 token、Service Account、RFC 8693 Token Exchange 委托链。拆解 subject_token、actor_token、act claim,以及与 JWT/JWKS 系列的交叉引用。
【Agent 身份与安全】细粒度 Scope 与 UMA 2.0 启示
从 coarse scope 到 resource-specific consent:UMA 2.0 Permission Ticket 模型、Google incremental auth 对照,以及 Agent 场景下的动态授权边界。