相关参考Reference

    签名流程

    出于安全考虑,除部分匿名请求外,绝大多数对百度智能云的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)中或者添加到查询字符串参数。

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

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

    上一篇
    简介
    下一篇
    生成认证字符串