對於每一次HTTP或者HTTPS協議請求，我們會根據訪問中的簽名資訊驗證訪問要求者身份。具體由使用AccessKeyID和AccessKeySecret對稱式加密驗證實現。
AccessKey相當於使用者密碼，AccessKey用於調用API，而使用者密碼用於登入 ECS控制台 。其中AccessKeyID是訪問者身份，AccessKeySecret是加密簽名字元串和伺服器端驗證簽名字元串的密鑰，必須嚴格保密謹防泄露。
我們提供了多種程式設計語言的SDK及第三方SDK，可以免去您簽名的煩惱。更多詳情，請下載 SDK。
排序參數。定序以首字母順序排序，排序參數包括 公共請求參數 和介面自訂參數，不包括公共請求參數中的 Signature 參數。
當使用GET方法提交請求時，這些參數就是請求URL中的參數部分，即URL中 ? 之後由 & 串連的部分。
編碼參數。使用UTF-8字元集按照 RFC3986 規則編碼請求參數和參數取值，編碼規則如下：
字元A~Z、a~z、0~9以及字元 -、_、.、~ 不編碼。
其它字元編碼成%XY的格式，其中XY是字元對應ASCII碼的16進位。樣本：半形雙引號（"）對應%22。
擴充的UTF-8字元，編碼成%XY%ZA…的格式。
空格（ ）編碼成 %20，而不是加號（+）。
該編碼方式與application/x-www-form-urlencoded MIME格式編碼演算法相似，但又有所不同。
如果您使用的是Java標準庫中的java.net.URLEncoder，可以先用標準庫中percentEncode編碼，隨後將編碼後的字元中加號（+）替換為%20、星號（*）替換為%2A、%7E替換為波浪號（~），即可得到上述規則描述的編碼字元串。
使用等號（=）串連編碼後的請求參數和參數取值。
使用與號（&）串連編碼後的請求參數，注意參數排序與 步驟1 一致。
現在，您得到了正常化請求字元串（CanonicalizedQueryString），其結構遵循 請求結構。
構造待簽名字元串StringToSign。您可以同樣使用 percentEncode 處理上一步構造的正常化請求字元串，規則如下：
HTTPMethod + "&" + //HTTPMethod：發送請求的 HTTP 方法，例如 GET。
percentEncode("/") + "&" + //percentEncode("/")：字元（/）UTF-8 編碼得到的值，即 %2F。
percentEncode(CanonicalizedQueryString) //您的正常化請求字元串。
按照 RFC2104 的定義，計算待簽名字元串StringToSign的HMAC-SHA1值。樣本使用的是Java Base64編碼方法。
計算簽名時，RFC2104規定的Key值是您的 AccessKeySecret 並加上與號（&)，其ASCII值為38。
添加根據 RFC3986 規則編碼後的參數 Signature 到正常化請求字元串URL中。
以調用 DescribeRegions 查詢地域為例。假設您獲得了AccessKeyID=testid以及AccessKeySecret=testsecret，簽名流程如下所示：
構造正常化請求字元串。
構造待簽名字元串 StringToSign。
計算簽名值。因為AccessKeySecret=testsecret，用於計算的Key為testsecret&，計算得到的簽名值為 OLeaidS1JvxuMvnyHOwuJ+uX5qY=。樣本使用的是Java Base64編碼方法。
添加 RFC3986 規則編碼後的Signature=OLeaidS1JvxuMvnyHOwuJ%2BuX5qY%3D 到 步驟1 的URL中。
通過以上URL，您可以使用瀏覽器、curl或者wget等工具發起HTTP請求調用DescribeRegions，查看阿里雲的地域列表。
預定義編碼方法。
預定義編碼時間格式Timestamp。參數Timestamp必須符合 ISO8601 規範，並需要使用UTC時間，時區為+0。
構造請求字元串。
簽名。因為AccessKeySecret=testsecret，所以用於計算HMAC的Key為testsecret&，計算得到的簽名值為OLeaidS1JvxuMvnyHOwuJ%2BuX5qY%3D。
增加簽名參數後，按照 RFC3986 規則編碼後的URL如下所示：
使用瀏覽器、curl或者wget等工具發送HTTP請求。
返回結果列舉了地域和地域ID列表。如果您在提交請求時，指定參數Format=JSON，那麼返回結果的格式為JSON格式而不是XML格式。更多詳情，請參閱 返回結果。