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及以上版本 | |
PHP SDK | 2.7.0及以上版本 | |
Node.js SDK | 6.20.0及以上版本 | |
Python SDK | 2.18.4及以上版本 | |
Browser.js SDK | 6.20.0及以上版本 | |
.NET SDK | 2.14.0及以上版本 | |
Go SDK | 3.0.2及以上版本 | |
C++ SDK | 1.10.0及以上版本 | |
C SDK | 3.11.0及以上版本 |
手动实现V4签名
当您无法使用阿里云SDK时,您可以参考以下方法手动实现V4签名算法,然后通过V4签名的方式访问OSS资源。
签名方式 | 说明 | 参考文档 |
在Header中包含签名 | 在OSS中,使用HTTP请求的Authorization Header来携带签名信息是进行身份验证的最常见方法。除了使用POST签名和URL签名之外,所有的OSS操作都需要通过Authorization Header来进行身份验证。 | |
在URL中包含签名 | 通过生成一个包含签名和其他必要请求信息的预签名URL的方式,在不透露访问凭证的情况下,授予第三方在特定有效期内对OSS资源的访问权限。 | |
在PostObject中包含签名 | PostObject签名旨在实现通过HTML表单直接上传文件到OSS的一种签名机制。这种机制允许用户在客户端(例如Web浏览器)构造一个HTML表单,表单中包含要上传文件的字段以及其他必要的参数,例如签名、访问密钥、Bucket名称、对象键等。当表单提交时,这些信息会通过HTTP POST请求发送到OSS,OSS会对POST请求进行合法性验证。 |