obs签名机制概述-九游平台
功能简介
客户端每次调用obs api时,都需要在http调用请求中携带签名信息,服务端会对收到的签名信息进行验证。签名验证的目的是:
- 对请求者进行身份验证,防止未授权用户访问。请求携带的签名包含用户相关信息,华为云会对请求者身份进行验证,只有已授权用户的密钥才能通过签名检查,成功调用api。
- 防止传输数据被篡改。对数据签名并检验,保障传输内容完整性。
- 防止签名超期后信息被盗用。设置签名有效期,只有在有效期内签名可以使用,超过有效期后签名失效。
原理说明
obs签名机制的运作流程如图1所示:
执行端 |
序号 |
步骤 |
说明 |
---|---|---|---|
客户端 |
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调用结果 |
|
|
客户端 |
8 |
接收服务端响应 |
客户端接收服务端响应。 |
携带签名的方式
obs支持3种携带签名的方式,分别是header携带、url携带和表单携带。表单携带签名仅适用于post上传接口。header和url携带签名的区别如下表所示:
对比项 |
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编码 |
否 |
是 |
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨