問題描述
使用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
文檔內容是否對您有幫助?