当前位置:首页 > 行业动态 > 正文

对象存储OBSURL中携带签名_URL中携带签名

对象存储服务(OBS)的URL通常包含一个签名,这个签名用于验证请求的合法性。签名是在创建URL时生成的,并作为URL的一部分携带,以确保只有具有相应权限的用户才能访问或操作存储在OBS中的资源。

对象存储服务(Object Storage Service,简称OBS)是一种可存储任意类型和规模数据的云存储服务,在访问OBS中的对象时,URL中可以携带签名,以实现对请求的鉴权。

生成签名

1. 准备参数

操作:GETObject

路径:/examplebucket/exampleobject

时间戳:20220101T00:00:00Z

密钥:youraccesskeyid

2. 生成签名

使用HMACSHA256算法,将上述参数进行拼接,然后计算签名。

import hmac
import hashlib
import base64
def generate_signature(secret_key, string_to_sign):
    signature = base64.b64encode(hmac.new(str(secret_key).encode('utf8'), str(string_to_sign).encode('utf8'), hashlib.sha256).digest())
    return signature.decode()
secret_key = 'youraccesskeyid'
string_to_sign = 'GET
20220101T00:00:00Z
/examplebucket/exampleobject'
signature = generate_signature(secret_key, string_to_sign)

构建带签名的URL

将签名添加到URL中,形成带签名的URL。

url = f'https://obs.example.com/examplebucket/exampleobject?Signature={signature}&Expires={expiration_time}'

使用带签名的URL访问对象

通过浏览器或其他HTTP客户端,使用带签名的URL访问OBS中的对象。

import requests
response = requests.get(url)
print(response.text)

注意事项

确保签名算法和参数与OBS服务的设置一致。

注意签名有效期,避免过期导致访问失败。

保护好密钥,避免泄露。

以下是一个示例介绍,展示如何将对象存储OBS的URL中携带签名的信息,为了简化说明,介绍仅包含几个关键列,具体项目可能需要根据实际情况进行调整。

序号 OBS对象Key 签名前URL 签名后URL 签名有效时间
1 example.jpg http://obs.example.com/example.jpg?param=value http://obs.example.com/example.jpg?param=value&signature=xxxxx 1小时
2 document.pdf http://obs.example.com/document.pdf http://obs.example.com/document.pdf?signature=yyyyy 30分钟
3 video.mp4 http://obs.example.com/videos/video.mp4 http://obs.example.com/videos/video.mp4?signature=zzzzz 24小时

说明:

序号:记录的序号,方便管理。

OBS对象Key:对象存储中的文件路径或唯一标识。

签名前URL:原始的对象存储URL,可能包含一些必要的查询参数。

签名后URL:在原始URL后添加了签名参数的URL,通常用于临时授权访问。

签名有效时间:签名的时间限制,超出此时间限制,签名将无效。

签名参数通常由以下部分组成:

signature:通常是通过计算得出的一个字符串,确保请求的合法性和数据的完整性。

请注意,这里的签名是示例用的,实际签名需要通过具体的加密算法和密钥生成,保证安全性,在不同的对象存储服务中,签名的具体实现和参数可能会有所不同。

0