全部产品
Search
文档中心

对象存储 OSS:V1签名升级为V4签名指引

更新时间:Dec 20, 2024

OSS签名机制主要用于验证请求发送者的身份以及请求的有效性,防止未授权访问和数据篡改。OSS支持V1和V4两种不同版本的签名算法。相比V1签名,V4签名采用了更为安全的哈希算法(OSS4-HMAC-SHA256)和更加复杂的签名计算流程,确保数据交互的安全性。本文介绍如何升级为安全性更高的V4签名。

重要

阿里云对象存储OSS自2025年03月01日起不再对新用户(即新UID )开放使用V1签名,并将于2025年09月01日起停止更新与维护且不再对新增Bucket开放使用V1签名。请尽快切换到V4签名,避免影响服务。更多信息,请参见公告链接

自动实现V4签名

V4签名计算过程较为繁琐,任何微小的计算偏差都可能导致请求失效,建议您采用阿里云SDK发起OSS服务请求。阿里云SDK内置了V4签名机制,能自动处理签名计算,免除您手动编写及调试代码实现V4签名。您可以根据使用的编程语言或平台,参考以下文档将SDK更新至支持V4签名的版本。

说明

通过阿里云SDK、ossutil2.0自动实现V4签名时,除指定Endpoint以外,您还需要指定阿里云通用Region ID作为发起请求地域的标识,示例值为cn-hangzhou。更多信息,请参见OSS地域和访问域名

SDK

版本要求

参考文档

Java SDK

3.17.4及以上版本

Java实现V4签名

PHP SDK

2.7.0及以上版本

PHP实现V4签名

Node.js SDK

6.20.0及以上版本

Node.js实现V4签名

Python SDK

2.18.4及以上版本

Python实现V4签名

Browser.js SDK

6.20.0及以上版本

Browser.js实现V4签名

.NET SDK

2.14.0及以上版本

.NET实现V4签名

Go SDK

3.0.2及以上版本

Go实现V4签名

C++ SDK

1.10.0及以上版本

C++实现V4签名

C SDK

3.11.0及以上版本

C实现V4签名

手动实现V4签名

当您无法使用阿里云SDK时,您可以参考以下方法手动实现V4签名算法,然后通过V4签名的方式访问OSS资源。

签名方式

说明

参考文档

在Header中包含签名

在OSS中,使用HTTP请求的Authorization Header来携带签名信息是进行身份验证的最常见方法。除了使用POST签名和URL签名之外,所有的OSS操作都需要通过Authorization Header来进行身份验证。

在Header中包含V4签名

在URL中包含签名

通过生成一个包含签名和其他必要请求信息的预签名URL的方式,在不透露访问凭证的情况下,授予第三方在特定有效期内对OSS资源的访问权限。

在URL中包含V4签名

在PostObject中包含签名

PostObject签名旨在实现通过HTML表单直接上传文件到OSS的一种签名机制。这种机制允许用户在客户端(例如Web浏览器)构造一个HTML表单,表单中包含要上传文件的字段以及其他必要的参数,例如签名、访问密钥、Bucket名称、对象键等。当表单提交时,这些信息会通过HTTP POST请求发送到OSS,OSS会对POST请求进行合法性验证。

PostObject包含V4签名