本指南涵盖了实现和部署 ATH 时的安全注意事项。

代理证明验证

  • 代理证明 JWT 必须(MUST)根据代理在其 agent_id URI 上发布的公钥进行验证
  • JWT 必须(MUST)包含过期时间(exp)和受众(aud
  • 实现者必须(MUST)拒绝过期或受众不匹配的证明
  • 使用短期有效的证明令牌(建议:1 小时或更短)

令牌绑定

ATH 访问令牌必须(MUST)绑定到特定的元组:
(agent_id, user_id, provider_id, scopes)
  • 由一个代理获取的令牌不得(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可选