简介
所有文档
menu

相关参考 Reference

简介

对API请求进行签名计算

当您将HTTP请求发送到百度智能云时,您需要对您的请求进行签名计算,以便百度智能云可以识别您的身份。您将使用百度智能云的访问密钥来进行签名计算,该访问密钥包含访问密钥ID(Access Key Id, 后文简称AK)和秘密访问密钥(Secret Access Key, 后文简称SK).

注意:

仅当您手动创建HTTP请求(RESTful API调用)时,您才需要了解如何对请求进行签名计算。当您使用智能云提供的SDK时,在SDK中已经封装了完整的签名算法,使用者无需自己实现。

了解如何创建、查看和下载Access Key Id(AK)和Secret Access Key(SK), 请参考管理您的AKSK.

何时需要签署API请求?

当您编写代码将HTTP请求发送到百度智能云时(使用RESTFul API),就需要包含用于签名计算的代码。您可能在如下场景下会直接调用百度智能云的RESTFul API:

  • 您正在使用的编程语言,或您需要请求的智能云服务,没有对应的智能云SDK。
  • 您希望能够完全控制您的API请求。

在使用智能云SDK时,您不需要进行签名计算,这些SDK中会管理和封装签名算法、处理请求重试和错误处理等。

为什么要进行签名计算?

签名过程会通过以下方式保护您的API请求:

  • 验证请求者的身份
    签名可以确保请求是由某个具有有效访问密钥的用户或服务发起。详细请参考管理您的AKSK
  • 保护传输中的数据,防止非法篡改
    若请求在传输过程中遭到非法篡改,由于第三方无法对篡改后的请求进行计算,得到新的认证字符串(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中包含认证字符串,请参考在URL中包含认证字符串

签名版本

百度智能云目前支持两个签名版本:认证字符串版本v2和认证字符串版本v1,绝大多数情况下,您应该使用版本v1。v2版本与v1版本的最大区别在于更高的请求响应性能,目前仅表格服务BTS已经支持v2版本的认证字符串。

视频参考

您也可以参看从零开始用Python调用API接口,视频的前半部分介绍了百度智能云鉴权认证机制,帮助您更快的进行了解。

上一篇
获取AKSK
下一篇
签名流程