简介

相关参考 Reference

  • 文档有奖反馈活动
  • 文档有奖反馈2
  • 功能发布记录
  • 捉虫活动获奖名单
  • 鉴权认证机制
    • 常见签名认证错误排查
    • 简介
    • 在URL中包含认证字符串
    • 在Header中包含认证字符串
    • 签名流程
    • Sample-Code
    • 生成V2认证字符串
    • 错误码
    • 生成认证字符串
  • SDK入门指南
    • Python-SDK帮助指南
    • PHP-SDK入门指南
    • Java-SDK入门指南
  • 区域选择说明
    • 区域
    • 可用区
  • API SDK
    • Java-SDK
  • 证书管理
    • 多用户访问控制
    • 管理证书
    • 格式转换
    • 简介
    • Python-SDK
    • GO-SDK
    • 上传证书
    • 证书和私钥
    • API参考
    • 常见问题
    • 第三方机构创建证书
    • 证书替换
    • JAVA-SDK
  • 企业组织
    • 退出组织
    • 账户联合认证(SSO)
    • 权限策略管理
    • 子账户管理
    • 产品介绍
    • 财务管理
    • 常见问题
    • 企业组织vs多用户访问控制
    • 权限评估逻辑
    • 创建企业组织
    • 系统限制
    • 组织单元
    • API参考
      • 通用说明
      • 企业组织管理接口
      • 邀请管理接口
      • 策略管理接口
      • 简介
      • 单元管理接口
      • 账户管理接口
      • 数据类型
  • API Key
    • 操作手册
    • 简介
    • API参考
  • 获取AKSK
    • 简介
    • 如何获取AKSK
  • 术语表
    • B
    • Z
    • F
    • G
    • C
    • H
    • P
    • L
    • T
    • M
    • I
    • Q
    • N
    • V
    • J
    • R
    • K
    • S
    • O
    • W
    • D
    • X
    • A
    • Y
    • E
所有文档
menu
没有找到结果,请重新输入

相关参考 Reference

  • 文档有奖反馈活动
  • 文档有奖反馈2
  • 功能发布记录
  • 捉虫活动获奖名单
  • 鉴权认证机制
    • 常见签名认证错误排查
    • 简介
    • 在URL中包含认证字符串
    • 在Header中包含认证字符串
    • 签名流程
    • Sample-Code
    • 生成V2认证字符串
    • 错误码
    • 生成认证字符串
  • SDK入门指南
    • Python-SDK帮助指南
    • PHP-SDK入门指南
    • Java-SDK入门指南
  • 区域选择说明
    • 区域
    • 可用区
  • API SDK
    • Java-SDK
  • 证书管理
    • 多用户访问控制
    • 管理证书
    • 格式转换
    • 简介
    • Python-SDK
    • GO-SDK
    • 上传证书
    • 证书和私钥
    • API参考
    • 常见问题
    • 第三方机构创建证书
    • 证书替换
    • JAVA-SDK
  • 企业组织
    • 退出组织
    • 账户联合认证(SSO)
    • 权限策略管理
    • 子账户管理
    • 产品介绍
    • 财务管理
    • 常见问题
    • 企业组织vs多用户访问控制
    • 权限评估逻辑
    • 创建企业组织
    • 系统限制
    • 组织单元
    • API参考
      • 通用说明
      • 企业组织管理接口
      • 邀请管理接口
      • 策略管理接口
      • 简介
      • 单元管理接口
      • 账户管理接口
      • 数据类型
  • API Key
    • 操作手册
    • 简介
    • API参考
  • 获取AKSK
    • 简介
    • 如何获取AKSK
  • 术语表
    • B
    • Z
    • F
    • G
    • C
    • H
    • P
    • L
    • T
    • M
    • I
    • Q
    • N
    • V
    • J
    • R
    • K
    • S
    • O
    • W
    • D
    • X
    • A
    • Y
    • E
  • 文档中心
  • arrow
  • 相关参考Reference
  • arrow
  • 鉴权认证机制
  • arrow
  • 简介
本页目录
  • 对API请求进行签名计算
  • 何时需要签署API请求?
  • 为什么要进行签名计算?
  • 签名API请求
  • 签名版本
  • 视频参考

简介

更新时间:2025-08-22

对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接口,视频的前半部分介绍了百度智能云鉴权认证机制,帮助您更快的进行了解。

上一篇
常见签名认证错误排查
下一篇
在URL中包含认证字符串