认证
向 Agent 认证及登出
ACP 认证在初始化期间协商。Agent 在 authMethods 中宣告可用的认证方法,客户端通过调用 authenticate 选择一种方法,支持结束认证状态的 Agent 则宣告 logout 能力。
Agent 在 initialize 响应的 authMethods 字段中宣告认证选项。每个方法有一个 id,客户端在后续的 authenticate 请求中将其传回 Agent。支持 logout 的 Agent 还宣告 agentCapabilities.auth.logout:
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"protocolVersion": 1,
"agentCapabilities": {
"auth": {
"logout": {}
}
},
"authMethods": [
{
"id": "agent-login",
"name": "Agent login",
"description": "Sign in using the agent's login flow"
}
]
}
}
如果 agentCapabilities.auth.logout 被省略或为 null,则 Agent 不支持 logout,客户端不得调用它。提供 {} 表示 Agent 支持该方法。
认证方法类型
默认的认证方法类型为 agent,即由 Agent 自行处理认证。当没有 type 存在时,该方法被视为 agent:
{
"id": "agent-login",
"name": "Agent login",
"description": "Sign in using the agent's login flow"
}
显式的 "type": "agent" 也可接受但不是必需的。参见 schema 获取完整的稳定 AuthMethod 定义。
认证
当 Agent 在允许创建会话之前要求认证时,客户端使用宣告的某个认证方法 ID 调用 authenticate:
{
"jsonrpc": "2.0",
"id": 1,
"method": "authenticate",
"params": {
"methodId": "agent-login"
}
}
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
methodId | string | 是 | 要使用的认证方法的 ID。此值必须与 initialize 响应中宣告的方法之一匹配。 |
成功时,Agent 返回空结果:
{
"jsonrpc": "2.0",
"id": 1,
"result": {}
}
认证成功后,客户端可以创建新会话而不会收到针对认证门控请求的 auth_required 错误。
登出
logout 方法允许客户端结束当前认证状态。客户端应仅在验证 Agent 在初始化期间宣告了 agentCapabilities.auth.logout 之后才调用它。
{
"jsonrpc": "2.0",
"id": 2,
"method": "logout",
"params": {}
}
成功时,Agent 返回空结果:
{
"jsonrpc": "2.0",
"id": 2,
"result": {}
}
成功 logout 后,需要认证的新会话将要求客户端再次调用 authenticate。
活跃会话
协议不保证 logout 后对已在运行的会话会发生什么。Agent 可能终止它们、保持运行,或对未来的会话活动返回 auth_required 错误。客户端应当准备好活跃会话操作在登出后因认证相关错误而失败,并应在适当时提示用户再次认证。