Atlassian Rovo A2A:真实 Agent Card、企业授权门与流式任务边界
Atlassian Rovo A2A:真实 Agent Card、企业授权门与流式任务边界
知识点轴:A2A / MCP Gateway / harness-runtime / sandbox-security。这是有公网 Card、OAuth 元数据、架构和测试手册的案例,不只是「支持 A2A」公告;本机只核验公开发现面,未运行登录后任务。
为什么值得深挖
对 A2A-Agent2Agent-Protocol 最有价值的增量,是把协议能力、企业准入、下游用户权限和边缘网络约束放进同一条链。它可以成为 Hermes 接外部企业 agent 的验收模板,但不能直接当作 Hermes 已有连接器,更不能因 Card 可读就认为服务已获授权。
官网说明文档更新于 2026-08-07;本次发现/取证于 2026-09-12。它是今天新入库的实践,不是声称今天才发布。
已实际取得的发现面
本机成功 GET 并保存了以下公开 JSON;对快照做了 10 项离线断言,包括版本、transport、endpoint、能力开关、资源 origin、Bearer 位置和 scope 集合一致性,全部通过。
| 对象 | 本轮观察 |
| Agent Card | https://a2a.atlassian.com/.well-known/agent.json |
| 服务 endpoint | https://a2a.atlassian.com/v1/rovo |
Card 的 version | 1.0.0,这是服务/Card 的版本字段,不是 A2A 协议版本 |
protocolVersion / transport | 0.3.0 / JSONRPC |
| capabilities | streaming=true;pushNotifications=false;stateTransitionHistory=false |
| OAuth Protected Resource Metadata | https://a2a.atlassian.com/.well-known/oauth-protected-resource/v1/rovo |
| scopes | read:me、offline_access、full_access:chat:rovo |
Card 原始响应 SHA-256:1f1d9944869754b1388b388e6b5686ebd0b61c8f4a2c54736d349507e4dd532b。公开可读只证明该次响应的内容,不证明鉴权后行为、端到端互操作、签名可信或 SLA。这也说明 a2a-v1-protocol-binding-governance 不能用最新规范覆盖一个仍声明 0.3 的服务。
机制:发现、身份和企业授权不是同一关
官网架构为:外部 agent → Card discovery → OAuth → 组织 enablement 检查 → JSON-RPC dispatcher → Rovo adapter → 下游 Rovo/Jira/Confluence。接入关口和业务权限分离:有合法 OAuth token 不代表组织允许 A2A,也不代表用户拥有所请求的 Jira 项目或 Confluence 页面权限。
认证文档规定 authorization-code flow + PKCE S256,需 Dynamic Client Registration;没有 API-token 或 session-cookie fallback。full_access:chat:rovo 不能据文档通过普通 Developer Console 手工加到客户端。客户端应从当时的 Card/metadata 读取授权参数,而非复制示例后长期硬编码。
组织无法从 token 解析时 -32008;组织已解析但未开启 A2A 时 -32007。两者在不同阶段,不能把每个 403 都归因于「用户没权限」。Rovo 用户 AI access policy 还可能在更下游拒绝。这与 MCP-Gateway-Runtime 的调用者、网关准入、工具/资源授权分层一致。
机制:实际服务 Card 是网关可执行能力的投影
架构文档描述 Card provider 有缓存/回源/fallback,TTL 为五分钟;网关服务时会覆盖 endpoint、版本、securitySchemes、transport 等字段,并将 push/history 强制为 false。因此,上游 agent 自报的能力并不自动成为网关承诺,客户端应绑定实际接入端点返回的 Card。
这给 registry 一个实用原则:同时保存原始 Card hash、抓取时间、协议 binding 和网关的有效能力,不把注册条目当永远有效的能力证书。当前快照反映 advertised surface;本轮没有验证 fallback、缓存更新或强制改写的服务端代码。
机制:流式不只是体验,也是边缘超时约束
文档列出 message/send、message/stream、tasks/get、tasks/cancel、tasks/resubscribe。同步请求受 CDN 约三十秒约束;耗时任务应走 SSE message/stream,否则边缘 HTTP 500 不等于下游没执行。不能未经 task/state 对账就盲目重试有副作用动作。
0.3 手册要求 message.kind、parts[].kind,不能误写为 type;示例使用 UUID messageId。A2A 在 a2a.atlassian.com,MCP 在另一主机 mcp.atlassian.com,不可混发 JSON-RPC。
对应 Harness-Engineering 的执行合同应保存 taskId、contextId、终态事件、artifact 和 traceId。SSE 断流、边缘超时、任务失败要单独分类;「收到了流」不是「完成了任务」。
可执行启发与下一步测试
建议在获得测试租户和用户明确授权后,分层运行:
- 固定 live Card/metadata 的 hash 与时间,校验 client 支持的协议和 capability;不支持的 push 不生成测试通过项。
- 在沙盒组织验证未开启 A2A、用户 AI policy 拒绝、越权资源访问三类负例;保存哪个服务返回了拒绝。
- 对相同只读业务任务比较 fast send 与长任务 stream,确认终态、trace 和断线恢复;对写任务先定义幂等与独立状态核对。
本轮未注册 OAuth 客户端、获取用户 token、创建 Jira/Confluence 数据、运行 SSE 或 TCK。这些仍是待验证,不是失败项被省略。
来源与边界
已读官网 About、Authentication、Architecture、End-to-end testing,及 live Card/Protected Resource JSON。/task-handling/ 本轮返回 404,未拿它充当已读来源;任务方法来自可读架构与测试页。运行证据归档:/tmp/ai-radar-20260912/rovo-readonly-checks.json。
相关:AI-Knowledge-Point-Radar · a2a-tck-conformance-coverage-and-security-boundaries。
写入记录
- 2026-09-12 09:16 CST:新增企业 A2A 深读,记录真实发现面、协议/服务版本区别、分层授权、网关能力投影及 SSE 边缘约束;明确公开 GET 与鉴权 E2E 的证据边界。