简介 -奇异果体育app竞彩官网下载
对api请求进行签名计算
当您将http请求发送到百度智能云时,您需要对您的请求进行签名计算,以便百度智能云可以识别您的身份。您将使用百度智能云的访问密钥来进行签名计算,该访问密钥包含访问密钥id(access key id, 后文简称ak)和秘密访问密钥(secret access key, 后文简称sk).
注意:
仅当您手动创建http请求(restful api调用)时,您才需要了解如何对请求进行签名计算。当您使用智能云提供的sdk时,在sdk中已经封装了完整的签名算法,使用者无需自己实现。
了解如何创建、查看和下载access key id(ak)和secret access key(sk), 请参考.
何时需要签署api请求?
当您编写代码将http请求发送到百度智能云时(使用restful api),就需要包含用于签名计算的代码。您可能在如下场景下会直接调用百度智能云的restful api:
- 您正在使用的编程语言,或您需要请求的智能云服务,没有对应的智能云sdk。
- 您希望能够完全控制您的api请求。
在使用智能云sdk时,您不需要进行签名计算,这些sdk中会管理和封装签名算法、处理请求重试和错误处理等。
为什么要进行签名计算?
签名过程会通过以下方式保护您的api请求:
- 验证请求者的身份
签名可以确保请求是由某个具有有效访问密钥的用户或服务发起。详细请参考 - 保护传输中的数据,防止非法篡改
若请求在传输过程中遭到非法篡改,由于第三方无法对篡改后的请求进行计算,得到新的认证字符串(authorization),智能云收到请求后认证字符串匹配将失败,因此身份校验无法通过。 - 防止重放攻击
认证字符串(authorization)都具有指定的有效时间。如请求被截获,第三方无法在有效时间之外重放请求。
为了保护用户的sk信息,百度智能云不直接使用sk信息,而是使用sk生成signingkey,同时在signingkey中包含有效时间范围。这样可以减少用户因signingkey丢失带来的安全隐患。
签名api请求
在请求签名之前,请先计算请求的哈希(摘要)。然后,您使用哈希值、来自请求的其他信息以及您的秘密访问密钥(secret access key,sk),计算另一个称为签名(signature) 的哈希, 得到签名后,进行一定规则的拼装成最终的认证字符串,也就是最终您需要包含在api请求中的authorization字段。
您可以通过以下方式携带认证字符串:
- 在http header中包含认证字符串
-
在url中包含认证字符串
用户也可以将认证字符串放在http请求query string的authorization参数中。常用于生成url给第三方使用的场景,例如要临时把某个数据开放给他人下载。关于如何在url中包含认证字符串,请参考。
签名版本
百度智能云目前支持两个签名版本:认证字符串版本v2和认证字符串版本v1,绝大多数情况下,您应该使用版本v1。v2版本与v1版本的最大区别在于更高的请求响应性能,目前仅表格服务bts已经支持v2版本的认证字符串。
视频参考
您也可以参看从零开始用python调用api接口,视频的前半部分介绍了百度智能云鉴权认证机制,帮助您更快的进行了解。