鉴权认证

API认证简介

用户可以通过两种方式与百度智能云进行交互,包括认证方式和匿名方式。对于认证方式,需要通过使用Access Key Id/Secret Access Key加密的方法来验证某个请求的发送者身份。Access Key Id(AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和百度智能云用来验证认证字符串的密钥,其中SK必须保密,只有用户和百度智能云知道。

当百度智能云接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。

说明:本文档主要针对RESTful API调用者,SDK使用者无需关注。在SDK中已经封装了完整的签名算法,使用者无需自己实现。

名词解释

认证字符串

非匿名请求中必须携带的认证信息。包含生成待签名串CanonicalRequest所必须的信息以及签名摘要signature。

authStringPrefix

认证字符串的前缀部分。

canonicalRequest

待签名串。携带经过规范化处理后的请求信息。

signingKey

签名Key。百度智能云不直接使用SK对待签名串生成摘要。相反的,百度智能云首先使用SK和认证字符串前缀生成signingKey,然后用signingKey对待签名串生成摘要。

signature

签名摘要。百度智能云使用signingKey对canonicalRequest使用HAMC算法计算签名。

API认证优势

API认证将为用户带来以下优势:

  • 对于请求者的身份进行验证。认证字符串使用指定用户的AK/SK对HTTP请求进行签名,可以起到验证用户身份的作用。关于AK/SK的获取,请参看获取AK/SK。
  • 对被传输内容进行保护,防止非法篡改。用户基于HTTP请求的指定内容生成认证字符串,如果在传输过程中遭到非法篡改,将导致系统生成的认证字符串与用户生成的认证字符串不匹配,最终导致认证失败。
  • 防止重放攻击。认证字符串都具有指定的生效时间,一个请求必须要在指定时间内到达百度智能云,否则系统将拒绝该请求。