代理证明验证
- 代理证明 JWT 必须(MUST)根据代理在其
agent_idURI 上发布的公钥进行验证 - JWT 必须(MUST)包含过期时间(
exp)和受众(aud) - 实现者必须(MUST)拒绝过期或受众不匹配的证明
- 使用短期有效的证明令牌(建议:1 小时或更短)
令牌绑定
ATH 访问令牌必须(MUST)绑定到特定的元组:- 由一个代理获取的令牌不得(MUST NOT)被另一个代理使用
- 为一个用户获取的令牌不得(MUST NOT)被另一个用户使用
- 用于一个提供者的令牌不得(MUST NOT)被用于访问另一个提供者
OAuth 安全
- 所有 OAuth 授权请求必须(MUST)使用 PKCE(RFC 7636)并采用 S256 质询方法
- 令牌交换请求必须(MUST)使用
application/x-www-form-urlencoded内容类型,遵循 RFC 6749 §4.1.3 - 提供者的 OAuth 客户端密钥必须(MUST)安全存储,绝不暴露给代理或用户
- 从 OAuth 流程获取的提供者令牌必须(MUST)存储在服务端,绝不发送给代理
传输安全
- 所有 ATH 通信必须(MUST)使用 HTTPS(TLS 1.2+)
- 实现者应当(SHOULD)验证上游服务的 TLS 证书
- 对于高安全性环境,mTLS 是可选的(计划在 v1.0 中支持)
速率限制与滥用防护
- 实现者应当(SHOULD)执行每个代理的速率限制
- 具有异常请求模式的代理应当(SHOULD)被标记并可能被暂停
- 代理注册表应当(SHOULD)支持撤销已泄露的代理
权限范围管理
- 遵循最小权限原则:代理应只请求所需的权限范围
- 服务运营者应为每个代理批准最小的权限范围集合
- 定期审查和审计代理权限范围的批准情况
- 为代理批准设置适当的过期时间
密钥管理
- 代理私钥应安全存储(硬件安全模块、密钥保管库或加密存储)
- 定期轮换代理密钥对
- 如果密钥泄露,应及时发布密钥撤销信息
部署建议
| 建议 | 优先级 |
|---|---|
| 全面启用 HTTPS | 必需 |
| 验证代理证明 JWT | 必需 |
| 执行令牌绑定 | 必需 |
| 启用审计日志 | 强烈建议 |
| 设置每个代理的速率限制 | 强烈建议 |
| 手动审核代理注册 | 生产环境建议 |
| 使用短期有效令牌 | 建议 |
| 为高安全性环境启用 mTLS | 可选 |