问题描述
使用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准确性
检查Endpoint信息准确性
需要您查看您Endpoint是否正确,不同区域的Bucket对应不同的Endpoint,详情请参见
访问域名和数据中心
。Endpoint信息格式如
endpoint = "http://oss-cn-beijing.aliyuncs.com"
。OSS资源的两种请求方式如下:
[$Schema]://[$Bucket].[$Endpoint]/[$Object]
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中包含签名 。