最近更新時間:2021-11-19
XXX 服務會對每個訪問的請求進行身份驗證,無論使用 HTTP 還是 HTTPS 協議提交請求,都需要在請求中包含簽名信息。XXX 通過使用 access key ID 和 access key secret 進行對稱加密的方法來驗證請求的發送者身份。
說明: XXX 服務會對每個訪問的請求進行身份驗證,無論使用 HTTP 還是 HTTPS 協議提交請求,都需要在請求中包含簽名信息。STS 通過使用 access key ID 和 access key secret 進行對稱加密的方法來驗證請求的發送者身份。
使用請求參數構造規范化的請求字符串。
排序參數。
排序規則以首字母順序排序,排序參數包括 公共參數和接口自定義參數。不包括公共請求參數中的Signature參數。
說明: 當使用 GET 方法提交請求時,這些參數就是請求 URL 中的參數部分,即 URL 中?之后由&連接的部分。
編碼參數。
使用 UTF-8 字符集對每個請求參數的名稱和參數取值進行 URL 編碼,URL 編碼規則如下:
對于字符 A-Z、a-z、0-9 以及字符-、_、.、~不編碼;
對于其他字符編碼成%XY的格式,其中XY是字符對應 ASCII 碼的 16 進制。例如:半角雙引號(")對應的編碼為:%22。
空格( )需要被編碼成:%20,而不是+。
說明: 一般支持 URL 編碼的庫都按照application/x-www-form-urlencoded的 MIME 格式的規則進行編碼,例如:Java 中的java.net.URLEncoder。您可以直接使用這類方式進行編碼,然后將編碼后的字符串中加號+替換成%20、*替換成%2A、%7E替換~,即可得到上述規則描述的編碼字符串。
使用=連接編碼后的參數名稱和參數取值。
使用&連接編碼后的參數,得到規范化請求字符串。
說明:參數排序需與排序參數保持一致。
使用規范化請求字符串構造用于計算簽名的字符串,規則如下:
StringToSign= |
按照 RFC2104 的定義,計算簽名 HMAC 值。
說明:計算簽名時使用的key就是用戶持有的access key secret加上一個&字符,其ASCII值為:38,使用的哈希算法是:SHA1。
按照Base64編碼規則將 HMAC 值編碼成字符串,得到簽名值。
將簽名值作為Signature添加到請求參數中。
說明: 將簽名值添加到請求參數時,需要按照 RFC3986 的規則進行 URL 編碼。
以 CreateUser 為例,簽名前的請求 URL 為:
https://api.unicloud.com/ram?UserName=test&SignatureVersion=1.0&Format=JSON&Timestamp=2015-08-18T03%3A15%3A45Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2015-05-01&Action=CreateUser&SignatureNonce=6a6e0ca6-4557-11e5-86a2-b8e8563dc8d2 |
對應的StringToSign是:
GET&%2F&AccessKeyId%3Dtestid%26Action%3DCreateUser%26Format%3DJSON%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D6a6e0ca6-4557-11e5-86a2-b8e8563dc8d2%26SignatureVersion%3D1.0%26Timestamp%3D2015-08-18T03%253A15%253A45Z%26UserName%3Dtest%26Version%3D2015-05-01 |
例如:access key ID 為:testid,access key secret 為:testsecret,用于計算 HMAC 的 key 就是:testsecret&,則計算得到的簽名值是:
kRA2cnpJVacIhDMzXnoNZG9tDCI%3D |
簽名后的請求URL為:
https://api.unicloud.com/ram?UserName=test&SignatureVersion=1.0&Format=JSON&Timestamp=2015-08-18T03%3A15%3A45Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2015-05-01&Signature=kRA2cnpJVacIhDMzXnoNZG9tDCI%3D&Action=CreateUser&SignatureNonce=6a6e0ca6-4557-11e5-86a2-b8e8563dc8d2 |