安全与认证
6.1 认证机制总览
UCP支持四种认证机制,适用于不同的安全需求层级:| 认证方式 | 标准 | 适用场景 | 安全级别 |
|---|---|---|---|
| API Keys | 自定义 | 公开目录浏览、低敏感度操作 | 基础 |
| OAuth 2.0 | RFC 6749/6750 | 用户身份关联、代表用户操作 | 标准 |
| mTLS | RFC 8705 | 服务端到服务端高安全通信 | 高 |
| HTTP Message Signatures | RFC 9421 | Webhook签名验证、请求完整性 | 高 |
API Keys
适用于无需用户身份的场景(如浏览公开商品目录):ucp_pk_test_)和生产环境(ucp_pk_live_)。
OAuth 2.0
详见第3章。用于需要代表消费者操作的场景(结账、订单查询等)。UCP强制使用Authorization Code + PKCE流程。mTLS (Mutual TLS)
双向TLS认证,客户端和服务器都需要提供证书。适用于平台与平台之间的高安全通信:HTTP Message Signatures (RFC 9421)
UCP的Webhook通知和关键API调用使用HTTP消息签名确保完整性和真实性。这是UCP安全模型中最重要的机制之一。6.2 JWK签名密钥
商家在/.well-known/ucp Profile中发布签名公钥,使用JSON Web Key (JWK)格式:
| 字段 | 值 | 说明 |
|---|---|---|
kid | 字符串 | 密钥标识符,用于在多个密钥中定位 |
kty | EC | 密钥类型:椭圆曲线 |
crv | P-256 | 曲线:NIST P-256 |
x | Base64URL | 椭圆曲线公钥X坐标 |
y | Base64URL | 椭圆曲线公钥Y坐标 |
use | sig | 用途:签名 |
alg | ES256 | 算法:ECDSA with SHA-256 |
signing_keys 数组中同时发布多个密钥(通过不同的 kid 区分),支持平滑的密钥轮换。旧密钥在过渡期内保留,新签名使用新密钥。
6.3 HTTP消息签名 (RFC 9421)
签名创建(商家侧)
商家发送Webhook时,按RFC 9421标准创建签名: 步骤1: 计算请求体的Content-Digest(RFC 9530)@method: HTTP方法(如POST)@target-uri: 完整请求URIcontent-digest: 请求体摘要content-type: 内容类型created: 签名创建时间戳(Unix时间)keyid: 对应Profile中的JWKkidalg: 签名算法
签名验证(AI代理侧)
6.4 Content-Digest (RFC 9530)
Content-Digest头提供请求体的完整性校验,防止传输过程中的篡改:6.5 传输安全
| 要求 | 说明 |
|---|---|
| HTTPS必须 | 所有UCP通信必须使用HTTPS,Profile端点不允许重定向 |
| TLS 1.2+ | 最低TLS 1.2,推荐TLS 1.3 |
| 证书验证 | AI代理必须严格验证商家的TLS证书 |
| HSTS | 建议启用HTTP Strict Transport Security |
| Certificate Transparency | 建议使用CT日志中的证书 |
6.6 数据安全与隐私
UCP对数据处理有明确的安全边界:| 数据类型 | AI代理的权限 | 禁止行为 |
|---|---|---|
| 商品目录 | 缓存、展示给用户 | 用于模型训练 |
| 买家个人信息 | 传递给商家完成交易 | 存储或共享给第三方 |
| 支付凭证 | 通过Payment Handler传递 | 存储、记录或转发 |
| 订单数据 | 展示给对应消费者 | 聚合分析或数据挖掘 |
| 签名密钥(私钥) | 不应接触私钥 | 任何形式的获取 |
6.7 安全最佳实践
- 密钥轮换: 定期轮换JWK签名密钥,在Profile中同时发布新旧密钥确保平滑过渡
- 速率限制: 对所有UCP端点实施合理的速率限制
- 审计日志: 记录所有结账和订单操作的完整审计日志
- 签名时间窗口: Webhook签名的
created时间戳应在5分钟以内 - 令牌安全: access_token不应出现在URL参数或日志中
- CORS: UCP API端点应配置严格的CORS策略
- 输入验证: 所有输入参数必须严格验证类型和范围
下一章: 商家集成指南 —
/.well-known/ucp Profile部署和能力声明