Skip to main content

安全与认证

6.1 认证机制总览

UCP支持四种认证机制,适用于不同的安全需求层级:

API Keys

适用于无需用户身份的场景(如浏览公开商品目录):
API Key通常区分测试环境(ucp_pk_test_)和生产环境(ucp_pk_live_)。

OAuth 2.0

详见第3章。用于需要代表消费者操作的场景(结账、订单查询等)。UCP强制使用Authorization Code + PKCE流程。

mTLS (Mutual TLS)

双向TLS认证,客户端和服务器都需要提供证书。适用于平台与平台之间的高安全通信:
mTLS遵循 RFC 8705 OAuth 2.0 Mutual-TLS Client Authentication,可以与OAuth 2.0结合使用。

HTTP Message Signatures (RFC 9421)

UCP的Webhook通知和关键API调用使用HTTP消息签名确保完整性和真实性。这是UCP安全模型中最重要的机制之一。

6.2 JWK签名密钥

商家在 /.well-known/ucp Profile中发布签名公钥,使用JSON Web Key (JWK)格式:
JWK字段说明: 密钥轮换: 商家可以在 signing_keys 数组中同时发布多个密钥(通过不同的 kid 区分),支持平滑的密钥轮换。旧密钥在过渡期内保留,新签名使用新密钥。

6.3 HTTP消息签名 (RFC 9421)

签名创建(商家侧)

商家发送Webhook时,按RFC 9421标准创建签名: 步骤1: 计算请求体的Content-Digest(RFC 9530)
步骤2: 定义签名输入(Signature-Input)
签名组件说明:
  • @method: HTTP方法(如POST)
  • @target-uri: 完整请求URI
  • content-digest: 请求体摘要
  • content-type: 内容类型
  • created: 签名创建时间戳(Unix时间)
  • keyid: 对应Profile中的JWK kid
  • alg: 签名算法
步骤3: 构造签名基础字符串
步骤4: 使用私钥(ES256)对基础字符串签名

签名验证(AI代理侧)

6.4 Content-Digest (RFC 9530)

Content-Digest头提供请求体的完整性校验,防止传输过程中的篡改:
计算方式:
Content-Digest与HTTP消息签名配合使用——签名覆盖Content-Digest头,Content-Digest覆盖请求体,形成完整的安全链条。

6.5 传输安全

6.6 数据安全与隐私

UCP对数据处理有明确的安全边界:

6.7 安全最佳实践

  1. 密钥轮换: 定期轮换JWK签名密钥,在Profile中同时发布新旧密钥确保平滑过渡
  2. 速率限制: 对所有UCP端点实施合理的速率限制
  3. 审计日志: 记录所有结账和订单操作的完整审计日志
  4. 签名时间窗口: Webhook签名的 created 时间戳应在5分钟以内
  5. 令牌安全: access_token不应出现在URL参数或日志中
  6. CORS: UCP API端点应配置严格的CORS策略
  7. 输入验证: 所有输入参数必须严格验证类型和范围

下一章: 商家集成指南/.well-known/ucp Profile部署和能力声明