使用OSS的API接口或SDK时提示“SignatureDoesNotMatch”签名相关的报错

问题描述

使用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中包含签名

  • 签名常见问题
  • 自签名计算Signature时经常会遇到签名计算失败
  • 对象存储OSS
  • 对象存储-PutObject 访问域名和数据中心 使用STS临时访问凭证访问OSS 安装并登录ossbrowser 0002-00000040 403错误