本文介紹了調(diào)用內(nèi)容檢測API的簽名機(jī)制。
說明 建議您直接使用內(nèi)容安全SDK,SDK中已經(jīng)封裝了簽名過程,無需您再編寫簽名代碼。關(guān)于SDK的詳細(xì)介紹,請參見Java SDK、Python SDK、PHP SDK、Go SDK和.NET SDK。
HMAC-SHA1簽名流程(默認(rèn))
- 序列化請求頭。按照以下方式,將所有以
x-acs-
開頭的HTTP頭拼接成字符串:- 抽取所有以
x-acs-
開頭的HTTP頭。 - 對抽取出來的頭按字典順序排序。
- 對每個HTTP頭,按
"HTTP頭名稱" + ":" + "HTTP頭值" + "\n"
拼接。
- 抽取所有以
- 序列化URI和query參數(shù)。按照
uri + "?clientInfo=" + "ClientInfo的JSON字符串"
方式拼接URI和clientInfo
參數(shù)。說明 此處不需要URL編碼。 - 構(gòu)建完整的待簽名字符串。按照以下方式,構(gòu)建完整的待簽名字符串:
"POST\napplication/json\n" + "HTTP頭Content-MD5的值" + "\n" + "application/json" + "\n" + "HTTP頭Date的值" + "\n" + "序列化請求頭" + "\n" "序列化uri和query參數(shù)"
以下是一個完整的調(diào)用圖片同步檢測接口的待簽名字符串示例:POST application/json C+5Y0crpO4sYgC2DNjycug== application/json Tue, 14 Mar 2017 06:29:50 GMT x-acs-signature-method:HMAC-SHA1 x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202 x-acs-signature-version:1.0 x-acs-version:2018-05-09 /green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"}
- 生成簽名。
HMAC-SM3簽名流程
- 序列化請求頭。按照以下方式,將所有以
x-acs-
開頭的HTTP頭拼接成字符串:- 抽取所有以
x-acs-
開頭的HTTP頭。 - 對抽取出來的頭按字典順序排序。
- 對每個HTTP頭,按
"HTTP頭名稱" + ":" + "HTTP頭值" + "\n"
拼接。
- 抽取所有以
- 序列化URI和query參數(shù)。按照
uri + "?clientInfo=" + "ClientInfo的JSON字符串"
方式拼接URI和clientInfo
參數(shù)。說明 此處不需要URL編碼。 - 構(gòu)建完整的待簽名字符串。按照以下方式,構(gòu)建完整的待簽名字符串:
"POST" + "\n" + "application/json" + "\n" + "HTTP頭Date的值" + "\n" + "序列化請求頭" + "\n" "序列化uri和query參數(shù)"
以下是一個完整的調(diào)用圖片同步檢測接口的待簽名字符串示例:POST application/json application/json Wed, 29 Mar 2023 01:44:08 GMT x-acs-content-sm3:690c6c542ac53eaa1e2ad724f34d60e689d11db88a2d89469be1fdb2f20fc35c x-acs-signature-method:HMAC-SM3 x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202 x-acs-signature-version:1.0 x-acs-version:2018-05-09 /green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"}
- 生成簽名。
- 對步驟3中得到的字符串,使用AccessKey Secret進(jìn)行HMAC-SM3算法加密得到bytes數(shù)組。說明 這一步不要對bytes數(shù)組做任何其他處理。
- 對HMAC-SM3加密得到的bytes數(shù)組進(jìn)行base64編碼。
- 將base64編碼后的結(jié)果放到HTTP頭
Authorization
中的signature
:"acs" + " " + AccessKeyId + ":" + signature
。說明acs
和AccessKeyId
中間有空格。
- 對步驟3中得到的字符串,使用AccessKey Secret進(jìn)行HMAC-SM3算法加密得到bytes數(shù)組。