為了保障數(shù)據(jù)安全和防止惡意調(diào)用,互億無線的接口支持通過 HMAC-SHA256 算法進行簽名認證。對于每一次HTTP或HTTPS協(xié)議請求,我們的網(wǎng)關(guān)將依據(jù)請求參數(shù)信息重新計算簽名,通過對比該簽名與請求中提供的簽名是否一致,從而驗證請求者的身份,以確保傳輸數(shù)據(jù)的完整性與安全性。開發(fā)者在調(diào)用 API 時,需按照本規(guī)范生成簽名并放入請求頭中。
簽名機制是對請求權(quán)限進行加密的過程,目的是:
以下是簽名生成和使用的 5 個步驟:
名稱 | 示例 | 說明 |
---|---|---|
接口地址 | http://api.ihuyi.com/empty-number/balance | 請求的接口 URL(不含參數(shù)),不同產(chǎn)品,地址是不同的 |
請求方法 | GET | 依據(jù)不同產(chǎn)品接口定義(GET 或 POST) |
Host | api.ihuyi.com | 接口域名 |
Date | Mon, 16 Jun 2025 08:24:34 GMT | 必須為 GMT 時間格式,偏差不得超過 ±300 秒 |
APIID | end7348191 | 由平臺分配的接口標識 ID |
APIKEY | xxxxxxx | 由平臺分配的密鑰,用于簽名加密 |
將以下字段拼接成待簽名字符串,注意每行之間需換行:
end7348191
GET /empty-number/balance
date: Mon, 16 Jun 2025 08:24:34 GMT
host: api.ihuyi.com
注意:
使用 APPSecret 對上一步的字符串執(zhí)行 HMAC-SHA256 加密,并用 Base64 編碼:
Python 示例:
def generateSignature(self, string_to_sign):
"生成HMAC簽名生
# 提取哈希算法(從hmac-sha256中提取sha256)
hash_algorithm = self.Algorithm[5:]
# 生成簽名
hmac_obj = hmac.new(
self.APIKEY.encode("utf-8"),
string_to_sign.encode("utf-8"),
getattr(hashlib, hash_algorithm)
)
return base64.b64encode(hmac_obj.digest()).decode("utf-8")
完整python及php、Java、Go、Shell示例代碼,可參考:https://gitee.com/shsurlink/api-demo/tree/master/hmac-auth
將簽名結(jié)果填寫至 Authorization
字段中,格式如下:
Authorization: Signature keyId="平臺的APIID", algorithm="加密方式", headers="加密的請求頭字段名", signature="簽名結(jié)果"
示例:
Authorization: Signature keyId="end7348191", algorithm="hmac-sha256", headers="@request-target date host", signature="Bm0wLf0soZJMsf5INx3pfTPmylbsAVd5Z27oZmyZhuc="
將簽名后的請求頭加入 HTTP 請求中,完成調(diào)用。
完整HTTP 請求結(jié)構(gòu):
名稱 | 是否必選 | 描述 | 示例值 |
---|---|---|---|
url | 是 | 接口地址,不同產(chǎn)品,地址是不同的 | http://api.ihuyi.com/empty-number/submit |
headers | 是 | 公共請求頭 | Host: api.ihuyi.com Date: Fri, 13 Jun 2025 10:02:39 GMT Content-Type: application/json Authorization: Signature keyId="end7348191", algorithm="hmac-sha256", headers="@request-target date host", signature="Bm0wLf0soZJMsf5INx3pfTPmylbsAVd5Z27oZmyZhuc=" |
body | 否 | 請求體 | 請考產(chǎn)品的說明文檔 |
method | 是 | 請求方法 | POST |
完整請求示例:
POST /empty-number/balance HTTP/1.1
Host: api.ihuyi.com
Date: Mon, 16 Jun 2025 08:24:34 GMT
Content-Type: application/json
Authorization: Signature keyId="end7348191", algorithm="hmac-sha256", headers="@request-target date host", signature="Bm0wLf0soZJMsf5INx3pfTPmylbsAVd5Z27oZmyZhuc="
驗證碼已發(fā)送到您的手機,請查收!
輸入驗證碼后,點擊“開通體驗賬戶”按鈕可立即開通體驗賬戶。