加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP天生腾讯云COS接口必要的哀求署名

发布时间:2021-05-25 15:20:39 所属栏目:编程 来源:网络整理
导读:COS和哀求署名是什么 COS 是腾讯云工具存储的缩写及简称,哀求署名是第三方在挪用COS相干接口时必要按需提供的、颠末特定算法建设而成的一组字符串信息,将独一的标识当前第三方身份,提供通讯两边的身份辨认,只有有用的署名COS才会提供处事 方针 行使 PHP

但 q-signature 怎么来的?

适才说到,q-signature 也必要特定算法计较得来,下面就声名怎样计较

计较哀求署名

先看代码:

* ref:https://cloud.tencent.com/document/product/436/7778 */

$qSignTime = "$qSignStart;$qSignEnd"; //unix_timestamp;unix_timestamp
$qKeyTime = $qSignTime;

$header_list = get_q_header_list($headers);
//假如 Uri 中带有 ?的哀求参数,该处应为数组排序后的字符串组合
$url_param_list = '';

//compute signature
$httpMethod = 'put';
$httpUri = $fileUri;

//与 q-url-param-list 沟通
$httpParameters = $url_param_list;

//将自界说哀求头解析为 & 毗连的字符串
$headerString = get_http_header_string( $headers );

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

副问题[/!--empirenews.page--]

COS和哀求署名是什么

COS 是腾讯云工具存储的缩写及简称,哀求署名是第三方在挪用COS相干接口时必要按需提供的、颠末特定算法建设而成的一组字符串信息,将独一的标识当前第三方身份,提供通讯两边的身份辨认,只有有用的署名COS才会提供处事

方针

行使 PHP 建设 COS 接口所必要的哀求署名,与官方文档给出的示例做较量,验证算法的正确性

熟悉哀求署名

先来看一条官方文档给出的哀求署名的样子

q-sign-algorithm=sha1&q-ak=[SecretID]&q-sign-time=[SignTime]&q-key-time=[KeyTime]&q-header-list=[SignedHeaderList]&q-url-param-list=[SignedParameterList]&q-signature=[Signature]

哀求署名特点总结

  • 是一串字符串
  • key=value的键值对名目,key为牢靠值
  • 一共有7对key=value
  • sha1也是参数,但截至到官方发文只支持sha1,因此可以直接赋值
  • SignedHeaderList、SignedParameterList、Signature三个value必要通过算法天生

键值对的详细描写拜见。

哀求署名一共必要7个值,下面逐一讲授,各个击破

署名算法,官方今朝仅支持 sha1,因此直接给值即可

账户ID,即用户的 SecretId,可以在节制台页面获取

当前署名的有用起止时刻,Unix时刻戳名目,英文半角分号;支解,名目如1480932292;1481012298

与 q-sign-time 值沟通

小我私人领略,由HTTP哀求头构成,取所有或部门哀求头,将key:value情势的哀求项的 key 部门取出,转化小写,多个 key 按字典排序,以字符;毗连,最终构成字符串

如原始哀求头有两个:

Host:bucket1-1254000000.cos.ap-beijing.myqcloud.com Content-Type:image/jpeg

key 就是 Host 和 Content-Type,颠末运算后输出content-type;host

小我私人领略,由HTTP哀求参数构成,取所有或部门哀求参数,将key=value情势的哀求参数的 key 部门取出,转化小写,多个 key 按字典排序,以字符;毗连,最终构成字符串

如原始HTTP哀求为:

GET /?prefix=abc&max-keys=20

key 就是 prefix 和 max-keys,颠末运算后输出max-keys;prefix,假如哀求没有参数好比 put、post,此处即为空

按照HTTP内容计较署名,算法由COS提供,只需按要求给值

在开始编写逻辑之前,先看一下官方示例给出的参考值,以及颠末计较后的功效,以便和本身开拓的逻辑举办功效比对

HTTP原始哀求,也可以领略为计较署名前或不必要署名时的HTTP哀求:

PUT /testfile2 HTTP/1.1 Host: bucket1-1254000000.cos.ap-beijing.myqcloud.com x-cos-content-sha1: 7b502c3a1f48c8609ae212cdfb639dee39673f5e x-cos-storage-class: standard

Hello world

计较署名后应该获得的HTTP哀求:

PUT /testfile2 HTTP/1.1 Host: bucket1-1254000000.cos.ap-beijing.myqcloud.com x-cos-content-sha1: 7b502c3a1f48c8609ae212cdfb639dee39673f5e x-cos-storage-class: standard Authorization: q-sign-algorithm=sha1&q-ak=AKIDQjz3ltompVjBni5LitkWHFlFpwkn9U5q&> q-sign-time=1417773892;1417853898&q-key-time=1417773892;1417853898&q-header-list=host;x-cos-content-sha1;x-cos-storage-class&q-url-param-list=&q-signature=14e6ebd7955b0c6da532151bf97045e2c5a64e10

Hello world

结论:算法假如能获得 Authorization 后的那一串字符串即为正确

来看一下(官方提供的)用户信息以及HTTP信息:

  • SecretId:AKIDQjz3ltompVjBni5LitkWHFlFpwkn9U5q
  • SecretKey:BQYIM75p8x0iWVFSIgqEKwFprpRSVHlz
  • 署名有用起始时刻:1417773892
  • 署名有用遏制时刻:1417853898
  • HTTP原始哀求头:按照上一节示例不难获得HTTP原始哀求有三项内容 Host、x-cos-content-sha1 和 x-cos-storage-class
  • HTTP哀求参数:是 PUT 哀求,没有 ? 参数

将筹备事变中的各项参数带入哀求署名法则,不难就可以获得功效,如下表:

键(key)

值(value) 备注
热点阅读