問題描述
使用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 2.0。
若使用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連結有最新版本資訊,擷取地址請參見Object Storage Service提供的主流語言SDK。
檢查您構造的API
如果簽名是您自己構造的API,建議您使用OSS提供的SDK,詳情請參看授權訪問。或者您檢查下自身計算簽名的演算法邏輯,建構簽章演算法請參見在Header中包含簽名。
適用於
Object Storage Service