服务端握手流程规范
概述
本文档定义了ATH协议服务端(应用)的握手流程实现规范。服务端职责
- 管理自身DID身份和公私钥对
- 验证客户端身份合法性
- 向用户确认授权请求,确保用户授权真实有效
- 审批权限请求,遵循最小权限原则
- 颁发访问令牌,维护会话状态
完整握手流程(服务端视角)
步骤1:接收并处理握手请求
服务端收到客户端握手请求后:- 验证客户端请求格式正确性
- 检查支持的协议版本和加密算法
- 保存客户端DID、公钥和随机数A
步骤2:发送握手响应
服务端生成自身随机数B,使用私钥对随机数A签名,发送响应报文:步骤3:验证客户端身份证明
服务端收到客户端身份证明后:- 使用客户端公钥验证随机数B的签名是否正确
- 验证客户端身份凭证(如果提供)
- 记录身份验证结果
步骤4:发送身份验证结果
服务端向客户端返回身份验证结果:步骤5:接收权限请求
服务端收到客户端权限请求后:- 验证用户授权凭证的签名和有效性
- 检查请求的权限范围是否在支持的范围内
- 提取用户ID和授权信息
步骤6:向用户确认授权
服务端必须向用户发起授权确认请求:步骤7:接收用户授权确认结果
服务端收到用户确认结果后:- 验证用户签名的有效性
- 记录用户最终授权的权限范围
- 如果用户拒绝授权,终止握手流程
步骤8:发送权限审批结果
服务端结合用户授权结果和自身安全策略,作出审批决定:步骤9:完成握手,颁发令牌
服务端与客户端完成密钥协商,颁发访问令牌:- 生成密钥交换参数,发送给客户端
- 生成共享会话密钥
- 签署访问令牌,包含授权范围、有效期等信息
- 记录会话状态,后续请求使用令牌验证
错误处理
| 错误码 | 描述 | 处理方式 |
|---|---|---|
| 401 | 客户端身份验证失败 | 拒绝握手,返回错误信息 |
| 403 | 用户拒绝授权 | 拒绝权限请求,返回拒绝原因 |
| 429 | 请求过于频繁 | 限制客户端请求频率 |
安全要求
- 用户授权确认必须通过独立通道发送,不得经过客户端转发
- 访问令牌必须使用服务端私钥签名,防止篡改
- 令牌有效期最长不超过1小时,超时自动失效