客户端握手流程规范
概述
本文档定义了ATH协议客户端(智能体)的握手流程实现规范。客户端职责
- 管理自身DID身份和公私钥对
- 存储和管理用户授权凭证
- 发起握手请求,完成双向身份验证
- 协商访问权限,获取访问令牌
- 维护与服务端的加密通信会话
完整握手流程(客户端视角)
前置步骤:获取用户预授权
客户端在发起握手前,必须先获得用户的预授权凭证:- 向用户请求授权,说明需要访问的资源范围
- 用户签署授权凭证,包含授权范围、有效期等信息
- 客户端安全存储用户授权凭证
步骤1:发起握手请求
客户端向服务端发送握手请求报文:步骤2:处理服务端握手响应
客户端收到服务端响应后:- 验证服务端DID和公钥的有效性
- 验证服务端对随机数A的签名是否正确
- 协商确定协议版本和加密算法
- 保存服务端公钥和元数据
步骤3:发送身份证明
客户端使用自身私钥对服务端生成的随机数B进行签名,发送身份证明报文:步骤4:处理身份验证结果
客户端收到身份验证结果:- 验证身份是否通过
- 读取服务端支持的作用域列表和配置信息
- 如果验证失败,终止握手流程
步骤5:发送权限请求
客户端向服务端发送权限请求,附带用户预授权凭证:步骤6-7:等待用户授权确认
客户端等待服务端完成用户授权确认流程,此过程由服务端和用户直接交互,客户端无需参与。步骤8:处理权限审批结果
客户端收到权限审批结果:- 检查授予的权限范围是否满足需求
- 记录访问限制条件和有效期
- 如果权限被拒绝,终止握手流程
步骤9:完成握手,建立会话
客户端与服务端完成密钥协商:- 生成密钥交换参数,发送给服务端
- 接收服务端密钥交换参数,生成共享会话密钥
- 验证服务端颁发的访问令牌有效性
- 使用会话密钥加密后续所有业务请求
错误处理
| 错误码 | 描述 | 处理方式 |
|---|---|---|
| 401 | 身份验证失败 | 检查自身身份配置,重新发起握手 |
| 403 | 权限被拒绝 | 提示用户重新授权,调整权限范围 |
| 408 | 握手超时 | 重试握手流程,最多重试3次 |
安全要求
- 用户授权凭证必须加密存储,防止泄露
- 私钥必须安全存储,不得明文传输
- 会话密钥定期轮换,有效期不超过24小时