对象存储服务(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:通常是通过计算得出的一个字符串,确保请求的合法性和数据的完整性。
请注意,这里的签名是示例用的,实际签名需要通过具体的加密算法和密钥生成,保证安全性,在不同的对象存储服务中,签名的具体实现和参数可能会有所不同。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/708979.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复