You need to enable JavaScript to run this app.
导航

URL 中包含签名

最近更新时间2023.11.21 10:22:21

首次发布时间2022.08.08 17:38:46

您可以在 URL 的查询参数中增加签名信息。该 URL 中包含 AK、有效期、资源、操作、签名等信息,任何使用该 URL 的人在有效期内都可以执行该 URL 对应的操作。这种方法称作预签名。

预签名 URL 格式

https://bucketname.tos-cn-beijing.volces.com/object
?X-Tos-Algorithm=TOS4-HMAC-SHA256
&X-Tos-Credential=<access-key-id>/<YYYYMMDD>/<region>/tos/request
&X-Tos-Date=20130721T201207Z
&X-Tos-Expires=86400
&X-Tos-SignedHeaders=host
&X-Tos-Signature=<signature> 
&X-Tos-Security-Token=<security-token>

参数说明

参数

描述

是否必选

X-Tos-Algorithm

用于标记签名的版本及算法,当前只支持 TOS4-HMAC-SHA256。

X-Tos-Credential

提供 AccessKey ID、日期,区域和服务信息。 格式为<acces-key-id>/<date>/<region>/tos/request,date格式为yyyyMMdd

X-Tos-Date

当前请求时间(UTC 时间),格式为yyyyMMddTHHmmssZ

X-Tos-Expires

该 URL 的有效期,单位为秒。该值为整数,最小为1,最大为604800(7 天),即签名有效期最长为 7 天。

X-Tos-SignedHeaders

列出用于计算签名的 Header,说明如下:

  • 必须包含 host 头域。
  • 必须包含所有 x-tos-\* 的头域。

X-Tos-Signature

计算出的签名。

X-Tos-Security-Token

使用临时 AK/SK 鉴权时,必须加上该头域,值为SecurityToken。

签名计算

URL 计算签名方式与 Header 签名,除了构造规范化请求(CanonicalRequest)上有所差异,其他流程都是相同的,差异点如下:

  • 在创建预签名 URL 时,由于请求的内容未知,需要使用 UNSIGNED-PAYLOAD 代替 HashedPayload。
  • CanonicalQueryString 中不包含 X-Tos-Signature 参数。
  • 使用临时 AK/SK 鉴权时,必须带上 X-Tos-Security-Token 参数。

预签名 URL 示例

以下载对象为例,相关信息如下。

参数

桶名

examplebucket

对象名

exampleobject

区域

cn-beijing

时间

Sat, 1 Jan 2022 00:00:00 GMT

AccessKeyId

testAK

SecretAccessKey

testSK

CanonicalRequest

GET
/exampleobject
X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=testAK%2F20220101%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20220101T000000Z&X-Tos-Expires=86400&X-Tos-SignedHeaders=host
host:examplebucket.tos-cn-beijing.volces.com

host
UNSIGNED-PAYLOAD

StringToSign

TOS4-HMAC-SHA256
20220101T000000Z
20220101/cn-beijing/tos/request
b0cda3030fc2db31d57af22c2a7ab4229434edff63f0982db8a3fb99b190677d

SigningKey

HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("testSK", "20220101"), "cn-beijing"), "tos"), "request")

Signture

353aa55583eceb222aad4bdcb70d4045a202a4af9a3096f25a656b82c8ec2f56

预签名 URL

https://examplebucket.tos-cn-beijing.volces.com/exampleobject?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=testAK%2F20220101%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20220101T000000Z&X-Tos-Expires=86400&X-Tos-SignedHeaders=host&X-Tos-Signature=353aa55583eceb222aad4bdcb70d4045a202a4af9a3096f25a656b82c8ec2f56