全部產品
Search
文件中心

Content Moderation:簽名機制

更新時間:Jul 06, 2024

本文介紹了調用內容檢測API的簽名機制。

說明 建議您直接使用Alibaba Content Security ServiceSDK,SDK中已經封裝了簽名過程,無需您再編寫簽名代碼。關於SDK的詳細介紹,請參見Java SDKPython SDKPHP SDKGo SDK.NET SDK

HMAC-SHA1簽名流程(預設)

  1. 序列化要求標頭。
    按照以下方式,將所有以x-acs-開頭的HTTP頭拼接成字串:
    1. 抽取所有以x-acs-開頭的HTTP頭。
    2. 對抽取出來的頭按字典順序排序。
    3. 對每個HTTP頭,按"HTTP頭名稱" + ":" + "HTTP頭值" + "\n"拼接。
  2. 序列化URI和query參數。
    按照uri + "?clientInfo=" + "ClientInfo的JSON字串"方式拼接URI和clientInfo參數。
    說明 此處不需要URL編碼。
  3. 構建完整的待簽名字串。
    按照以下方式,構建完整的待簽名字串:
    "POST\napplication/json\n" + 
    "HTTP頭Content-MD5的值" + "\n" + 
    "application/json" + "\n" + 
    "HTTP頭Date的值" + "\n" + 
    "序列化要求標頭" + "\n" 
    "序列化uri和query參數"
    以下是一個完整的調用圖片同步檢測介面的待簽名字串樣本:
    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"}
  4. 產生簽名。
    1. 步驟3中得到的字串,使用AccessKey Secret進行HMAC-SHA1演算法加密得到bytes數組。
      說明 這一步不要對bytes數組做任何其他處理。
    2. 對HMAC-SHA1加密得到的bytes數組進行base64編碼。
    3. 將base64編碼後的結果放到HTTP頭Authorization中的signature"acs" + " " + AccessKeyId + ":" + signature
      說明 acsAccessKeyId中間有空格。

HMAC-SM3簽名流程

  1. 序列化要求標頭。
    按照以下方式,將所有以x-acs-開頭的HTTP頭拼接成字串:
    1. 抽取所有以x-acs-開頭的HTTP頭。
    2. 對抽取出來的頭按字典順序排序。
    3. 對每個HTTP頭,按"HTTP頭名稱" + ":" + "HTTP頭值" + "\n"拼接。
  2. 序列化URI和query參數。
    按照uri + "?clientInfo=" + "ClientInfo的JSON字串"方式拼接URI和clientInfo參數。
    說明 此處不需要URL編碼。
  3. 構建完整的待簽名字串。
    按照以下方式,構建完整的待簽名字串:
    "POST" + "\n" +
    "application/json" + "\n" +
    "HTTP頭Date的值" + "\n" +
    "序列化要求標頭" + "\n"
    "序列化uri和query參數"
    以下是一個完整的調用圖片同步檢測介面的待簽名字串樣本:
    POST
    application/json
    
    application/json
    Wed,29Mar202301:44:08GMT
    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"}
  4. 產生簽名。
    1. 步驟3中得到的字串,使用AccessKey Secret進行HMAC-SM3演算法加密得到bytes數組。
      說明 這一步不要對bytes數組做任何其他處理。
    2. 對HMAC-SM3加密得到的bytes數組進行base64編碼。
    3. 將base64編碼後的結果放到HTTP頭Authorization中的signature"acs" + " " + AccessKeyId + ":" + signature
      說明 acsAccessKeyId中間有空格。