通用说明
API认证机制
所有 API 的安全认证一律采用 Access Key 与请求签名机制。 Access Key 由 Access Key ID 和 Secret Access Key 组成,均为字符串。 对于每个 HTTP 请求,使用下面所描述的算法生成一个认证字符串,提交认证字符串放在 Authorization 头域里。服务端根据生成算法验证认证字符串的正确性。 认证字符串的格式为bce-auth-v{version}/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}/{signedHeaders}/{signature}
。
- version 是正整数。
- timestamp 是生成签名时的UTC时间。
- expirationPeriodInSeconds 表示签名有效期限。
- signedHeaders 是签名算法中涉及到的头域列表。头域名之间用分号(;)分隔,如
host;x-bce-date
。列表按照字典序排列。(本 API 签名仅使用host
和x-bce-date
两个 header) - signature 是 256 位签名的十六进制表示,由 64 个小写字母组成。
当百度智能云接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。鉴权认证机制的详细内容请参见鉴权认证机制。
密码加密传输规范定义
所有涉及密码的接口参数都需要加密,禁止明文传输。密码一律采用 AES 128 位加密算法进行加密,用 SK 的前 16 位作为密钥,加密后生成的二进制字节流需要转成十六进制,并以字符串的形式传到服务端。具体步骤如下:
- byte[] bCiphertext= AES(明文,SK)
- String strHex = HexStr(bCiphertext)
幂等性
当调用创建接口时如果遇到了请求超时或服务器内部错误,用户可能会尝试重发请求,这时用户通过 clientToken 参数避免创建出比预期要多的资源,即保证请求的幂等性。
幂等性基于 clientToken,clientToken 是一个长度不超过 64 位的 ASCII 字符串,通常放在query string 里,如
http://cce.bj.baidubce.com/v1/instance?clientToken=be31b98c-5e41-4838-9830-9be700de5a20
如果用户使用同一个 clientToken 值调用创建接口,则服务端会返回相同的请求结果。因此用户在遇到错误进行重试的时候,可以通过提供相同的 clientToken 值,来确保只创建一个资源;如果用户提供了一个已经使用过的 clientToken,但其他请求参数(包括 queryString 和 requestBody )不同甚至url Path不同,则会返回 IdempotentParameterMismatch
的错误代码。
clientToken 的有效期为 24 小时,以服务端最后一次收到该 clientToken 为准。也就是说,如果客户端不断发送同一个 clientToken,那么该 clientToken 将长期有效。
排版约定
排版格式 | 含义 |
---|---|
< > | 变量 |
[ ] | 可选项 |
{ } | 必选项 |
| 互斥关系 | |
等宽字体 Courier New | 屏幕输出 |
请求参数
数据交换格式为 JSON,所有 request/response body 内容均采用 UTF-8 编码。
请求参数包括如下4种:
参数类型 | 说明 |
---|---|
URI | 通常用于指明操作实体,如 PUT /v1/cluster/{clusterUuid} |
Query参数 | URL 中携带的请求参数 |
HEADER | 通过 HTTP 头域传入,如 x-bce-date |
RequestBody | 通过 JSON 格式组织的请求数据体 |
返回值说明
返回值分为两种形式:
返回内容 | 说明 |
---|---|
HTTP STATUS CODE | 如 200, 400, 403, 404 等 |
ResponseBody | JSON 格式组织的响应数据体 |
API版本号
参数 | 类型 | 参数位置 | 描述 | 是否必须 |
---|---|---|---|---|
version | String | URL 参数 | API 版本号,当前 API 版本 v1 | 是 |