OBS SDK实战 之 用户签名:OBS桶绑定自定义域名后,三种签名方式访问OBS对象

举报
晓望峰 发表于 2019/05/14 20:46:26 2019/05/14
【摘要】 OBS针对不同的用户场景,提供了三种不同的用户签名方式,但是无论哪种签名方式,计算用户签名的算法都是一个很复杂的工作,而OBS SDK向客户封装了签名的生成,所以强烈建议客户尽量不要自建REST API请求,而是通过OBS SDK来使用OBS业务。不过即使OBS SDK封装了用户签名的具体过程,针对不同签名方式,SDK中ObsClient的配置和使用仍然有显著的不同,并且当OB...

       OBS针对不同的用户场景,提供了三种不同的用户签名方式,但是无论哪种签名方式,计算用户签名的算法都是一个很复杂的工作,而OBS SDK向客户封装了签名的生成,所以强烈建议客户尽量不要自建REST API请求,而是通过OBS SDK来使用OBS业务。不过即使OBS SDK封装了用户签名的具体过程,针对不同签名方式,SDK中ObsClient的配置和使用仍然有显著的不同,并且当OBS的自定义域名机制、华为云CDN回源访问机制加入到客户业务之后,客户端更容易出现配置不当导致的签名不匹配。

       本文将基于OBS SDK,梳理OBS桶绑定自定义域名(含配置CDN加速前后),客户使用三种不同的签名方式,进行访问OBS业务的代码实例分析。(PS:本文中以Python SDK为例,其他语言的SDK都有类似的对应类、方法和函数)


OBS Rest API提供的三种用户签名方式

OBS桶绑定自定义域名,没有配置CDN加速的场景

image.png

在Http Header中携带签名:

  • Python SDK样例代码:

    image.png

    执行结果正常:

    image.png

在URL Query参数中携带签名

  • Python SDK样例代码:

    image.png

    执行结果正常:

    image.png

Http Post上传表单中携带签名

  • Python SDK样例代码:

    image.png

      执行成功:

      image.png

OBS桶绑定自定义域名,同时配置了CDN加速的场景

  • OBS桶绑定了自定义域名,并设定了CDN加速

    image.png

  • CDN源站类型为“OBS桶域名”

    image.png  

  • 此时的CDN回源HOST配置是写死无法手动编辑的,CDN界面上显示的默认类型为“自定义域名”,域名值为“目标桶域名”

    image.png


在Http Header中携带签名:

  • Python SDK样例代码:

    image.png



    执行结果:

    image.png

在URL Query参数中携带签名:

  • 与之前没有设置CDN加速时相比,此处的SDK使用有所不同,需要特别注意!!


  • 以下为容易出错的Python SDK样例代码

    image.png

    但是执行结果将会因为签名不匹配报403错误:

    image.png



  • 在当前的CDN版本下,正确的Python SDK样例代码修改如下

    1、ObsClient 初始化时Server需要使用ObsEndpoint而不是自定义域名,is_cname也应该设置为False,然后用client计算出 SignedUrl——确保使用<同名>+<对象名>来计算签名

    2、使用第三方库发送Http请求之前,需要将SignedUrl中的ObsEndpoint替换为自定义域名——确保请求发送到华为云CDN服务

    3、同时需要将Http Header中的Host替换为自定义域名

    image.png

    此时执行结果正常:

    image.png


Http Post上传表单中携带签名

  • Python SDK样例代码:

    image.png

    执行上传操作成功

    image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。