九游平台/ 对象存储服务 obs/ / / / obs签名机制概述
更新时间:2024-08-07 gmt 08:00

obs签名机制概述-九游平台

功能简介

客户端每次调用obs api时,都需要在http调用请求中携带签名信息,服务端会对收到的签名信息进行验证。签名验证的目的是:

  • 对请求者进行身份验证,防止未授权用户访问。请求携带的签名包含用户相关信息,华为云会对请求者身份进行验证,只有已授权用户的密钥才能通过签名检查,成功调用api。
  • 防止传输数据被篡改。对数据签名并检验,保障传输内容完整性。
  • 防止签名超期后信息被盗用。设置签名有效期,只有在有效期内签名可以使用,超过有效期后签名失效。

原理说明

obs签名机制的运作流程如图1所示:

图1 obs api调用的签名和验签机制
表1 obs api调用的签名和验签机制

执行端

序号

步骤

说明

客户端

1

构造http请求

用户根据自身诉求构建http请求消息,一个完整的api调用请求包含请求uri、请求方法、请求消息头、请求消息体(可选),如何构造api请求详见。

2

计算签名s

根据构造的http请求和用户访问密钥计算签名s。您可以根据签名携带方式选择一种签名计算方式:

3

将签名s添加到请求消息中

将签名添加到请求消息中,消息携带签名的方式有3种:

4

发送携带签名s的api调用请求

将携带签名信息的请求发送给服务端。

obs服务端

5

接收调用请求

接受客户端的调用请求。

6

验证签名

服务端根据接收到的http请求和用户访问密钥再次计算签名s',比较s'与客户端计算的签名s是否一致,如果一致则签名验证成功,不一致则验证失败。

7

返回api调用结果

  • 如果验证成功则继续执行api,然后向客户端返回api执行结果。
  • 如果验证失败则通知客户端验证失败,状态码为403 forbidden,错误码为signaturedoesnotmatch。定位和修复签名不匹配行为请参见

客户端

8

接收服务端响应

客户端接收服务端响应。

携带签名的方式

obs支持3种携带签名的方式,分别是header携带url携带表单携带。表单携带签名仅适用于post上传接口。header和url携带签名的区别如下表所示:

表2 obs api调用携带签名

对比项

header携带签名

url携带签名

适用场景

一般情况下,推荐您使用在header中携带签名。

使用在url中签名的方式,会将授权的数据在过期时间内暴露在互联网上,具有一定的风险。该方式适用于在不提供给第三方访问密钥的情况下,让第三方能用预签发的url来进行身份认证,并执行预定义操作。

如何您想通过浏览器访问obs,建议您使用url携带签名,

是否支持设置expires

是否支持设置date

常用api

所有api接口

get、put

时间格式

通过date头域表示请求生成时间,date必须为rfc 1123格式的gmt时间。

如果date与当前服务器的时间相差超过15分钟时,则服务端返回403,认为请求已失效。

expires字段表示临时授权失效的时间,单位:秒。超过该时间后,url签名失效。

signature是否需要url编码

相关文档

网站地图