签名流程

相关参考 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
  • 签名流程
本页目录
  • 名词解释
  • 签名计算的工作原理

签名流程

更新时间:2025-08-22

出于安全考虑,除部分匿名请求外,绝大多数对百度智能云的API请求都需要使用访问密钥(包括访问密钥ID(AK)和秘密访问密钥(SK)),这两个密钥通常成为您的安全凭证。更多安全凭证信息请参考管理您的AKSK。

本章节将介绍百度智能云签名计算的工作原理和工作流程。

名词解释

本章节涉及的核心名词解释如下:

  • 认证字符串(authorization): 非匿名API请求中必须携带的认证信息,也是最终API中要求的Authorization字段。由前缀字符串、签名头域及签名摘要拼接而成。
  • 前缀字符串(authStringPrefix): 认证字符串的前缀部分,用于生成派生签名密钥(signingKey)和最终认证字符串的拼接。
  • 签名头域(signedHeaders):加入签名算法的HTTP头域列表,为认证字符串的中间部分。
  • 规范请求(canonicalRequest):经过规范化处理后的请求信息,又称待签名串。
  • 派生签名密钥(signingKey):百度智能云不直接使用用户SK对待签名串生成摘要,而是使用SK和前缀字符串生成派生签名密钥,然后使用派生密钥对规范请求生成最终签名摘要。
  • 签名摘要(signature):百度智能云使用派生签名密钥对规范请求进行HMAC算法计算得到,为最终认证字符串的后半部分。

签名计算的工作原理

对百度智能云的API请求包含了如下流程:

  1. 创建前缀字符串(authStringPrefix)。
  2. 创建规范请求(canonicalRequest),即待签名字符串,在此过程中可同时确定签名头域(signedHeaders)。
  3. 使用您的智能云秘密访问密钥(SK)与前缀字符串(authStringPrefix),通过HMAC算法计算出派生签名密钥(signingKey)。
  4. 使用派生签名密钥对规范请求进行签名计算,得到最终的签名摘要。
  5. 将前缀字符串和上一步生成的签名摘要拼接为认证字符串,并添加到API请求的标头(Header)中或者添加到查询字符串参数。

百度智能云服务收到请求后,将按照上述相同步骤来计算请求中发送的签名。然后对计算得到的签名与您在请求中发送的签名进行比较。如果签名匹配,则继续处理请求,如果签名不匹配,则拒绝请求,并报错。

更多签名计算相关信息,请参考如下链接:

  • 若要开始签名过程,请参考生成认证字符串
  • 有关签名请求的Demo,请参考从零开始用Python调用API接口
  • 使用常用工具快速生成签名请求,可以选择在线签名工具
  • 详细的签名报错及处理方式请参考 常见签名认证错误排查

上一篇
在Header中包含认证字符串
下一篇
Sample-Code