A2A Agent 协议
Agent2Agent (A2A) 接口、agent card、注册、基于任务的证书操作、MCP 和 webhooks。
Agent Trust 实现 Agent2Agent (A2A) v1.0.0 协议,Agent 可注册身份并通过任务模型请求 PKI 证书签发、续期和撤销。
Agent card#
每个部署都发布机器可读的 agent card:
GET /.well-known/agent-card.json它公布 A2A endpoints、认证方式(bearerAuth 和/或 mtlsAuth)及 Agent 可用 skills。客户端应在启动时读取,这是部署的权威信息。
认证
| 方式 | 方法 |
|---|---|
| Bearer / JWT | Authorization: Bearer [jwt],使用配置的签名 secret 验证;sub claim 成为 Agent 身份。 |
| mTLS | 在 mTLS listener 使用客户端证书;SPIFFE URI、subject key identifier 或 common name 映射到 Agent 身份。 |
| Kerberos | 加入域的服务账户通过 Authorization: Negotiate 认证。 |
Auth mode 可设为 off(匿名、基于 IP 的身份,向后兼容)、jwt 或 oidc(浏览器 session 或 mTLS 证书)。
注册 Agent#
POST /a2a/v1/register| 字段 | 说明 |
|---|---|
| agentId | 唯一 Agent 身份,首次注册时绑定调用方。 |
| displayName / agentCardJson | 可读名称和能力信息。 |
| publicKeyPem / certThumbprint | 策略要求时提供身份凭证;由客户端设置,管理员不可编辑。 |
| tags[] | 路由规则和 Agent 组使用的自由标签。 |
| webhookUrl | 可选 HTTPS outbound 通知 webhook,需要认证调用方。 |
agentId 绑定到注册调用方身份,其他调用方无法接管。每个 Agent 使用唯一 ID;同一 IP 下没有 agentId 的 Agent 会合并为一个身份。
Chain of Command#
基于 consent 的 swarm、delegated skills、签名 command vouchers 和执行报告,参阅 Chain of Command 指南。
Tasks#
证书操作是异步、可轮询的任务:
| 方法和路径 | 用途 |
|---|---|
| POST /a2a/v1/tasks/send | 创建带 user message 的任务,例如包含 CSR 文件。 |
| GET /a2a/v1/tasks/ | 查询状态和结果 artifacts。 |
| POST /a2a/v1/tasks//cancel | 取消运行中的任务。 |
| POST /a2a/v1/tasks//subscribe | 通过 SSE 接收任务更新。 |
以 file part 发送 CSR,轮询到 completed,再获取证书链 artifact。完整请求/响应见Agent 自助注册教程。
Streams 与幂等#
- message:stream 和 subscribe 支持 SSE。
- X-Idempotency-Key 可使相同 key 的重试不创建重复任务。
Webhooks#
Agent 可注册 outbound HTTPS webhook(公网 host、认证调用方)来接收通知并替代轮询。投递可验证;失败会记录在 Agent 记录和审计日志中。
MCP Compliance 工具#
启用 MCP 的 Agent 可直接调用 gateway Compliance 工具,例如在将 prompt 发送给模型前检查,并根据 allow、deny、flag 或 mask 判定采取操作。参阅 Claude Code、Cursor 与 MCP 教程。
任务状态
| 状态 | 含义 |
|---|---|
| submitted | 已创建,等待处理。 |
| working | 正在处理。 |
| input-required | 需要 Agent 补充输入。 |
| completed | 已完成,结果 artifacts 可用。 |
| canceled | Agent 或管理员取消。 |
| failed / rejected | 失败或被拒绝,例如身份被阻止。 |
| auth-required | 继续前需要 Agent 认证。 |