问题描述
使用OSS的API接口或SDK时,提示“SignatureDoesNotMatch”签名相关的报错。
SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method
问题原因
使用OSS的API接口或SDK时,客户端需要携带签名信息与OSS服务端进行校验,若客户端计算的签名与OSS服务端计算的签名不一致,请求不会通过验证。
解决方案
检查AK、SK准确性
- 您可以通过ossbrowser工具校验您的AK和SK是否正确,ossbrowser工具使用方法请参见快速使用ossbrowser。
- 若使用ossbrowser也无法打开,说明AK和SK不正确,请参见创建AccessKey,创建新的AK和SK。
检查Endpoint信息准确性
需要您查看您Endpoint是否正确,不同区域的Bucket对应不同的Endpoint,详情请参见访问域名和数据中心。Endpoint信息格式如endpoint = "http://oss-cn-beijing.aliyuncs.com"
。OSS资源的两种请求方式如下:
- 若以URL的形式来请求OSS的资源,OSS的URL构成如下。
[$Schema]://[$Bucket].[$Endpoint]/[$Object]
说明:
- [$Schema]:HTTP或者为HTTPS。
- [$Bucket]:OSS存储空间名称。
- [$Endpoint]:各地域Endpoint详情请参见访问域名和数据中心。
- [$Object] :上传到OSS上的文件的访问路径。
- 若以SDK的形式来请求OSS的资源,如下所示。
String accessKeyId = "XXX";
String accessKeySecret = "XXX";
String endpoint = "oss-cn-XXX.aliyuncs.com";
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
检查SDK的版本
使用部分旧版本的SDK可能会出现“SignatureDoesNotMatch”的问题,如果您使用的是旧版本SDK,请统一使用最新的SDK版本,官网对应的SDK链接有最新版本信息,获取地址请参见对象存储OSS提供的主流语言SDK。
检查您构造的API
如果签名是您自己构造的API,建议您使用OSS提供的SDK,详情请参见授权访问。或者您检查下自身计算签名的算法逻辑,构造签名算法请参见在Header中包含签名。
相关文档
适用于
- 对象存储OSS
文档内容是否对您有帮助?