为了保障数据安全和防止恶意调用,互亿无线的接口支持通过 HMAC-SHA256 算法进行签名认证。对于每一次HTTP或HTTPS协议请求,我们的网关将依据请求参数信息重新计算签名,通过对比该签名与请求中提供的签名是否一致,从而验证请求者的身份,以确保传输数据的完整性与安全性。开发者在调用 API 时,需按照本规范生成签名并放入请求头中。
签名机制是对请求权限进行加密的过程,目的是:
以下是签名生成和使用的 5 个步骤:
名称 | 示例 | 说明 |
---|---|---|
接口地址 | http://api.ihuyi.com/empty-number/balance | 请求的接口 URL(不含参数),不同产品,地址是不同的 |
请求方法 | GET | 依据不同产品接口定义(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 对上一步的字符串执行 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
将签名结果填写至 Authorization
字段中,格式如下:
Authorization: Signature keyId="平台的APIID", algorithm="加密方式", headers="加密的请求头字段名", signature="签名结果"
示例:
Authorization: Signature keyId="end7348191", algorithm="hmac-sha256", headers="@request-target date host", signature="Bm0wLf0soZJMsf5INx3pfTPmylbsAVd5Z27oZmyZhuc="
将签名后的请求头加入 HTTP 请求中,完成调用。
完整HTTP 请求结构:
名称 | 是否必选 | 描述 | 示例值 |
---|---|---|---|
url | 是 | 接口地址,不同产品,地址是不同的 | 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 | 否 | 请求体 | 请考产品的说明文档 |
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="
验证码已发送到您的手机,请查收!
输入验证码后,点击“开通体验账户”按钮可立即开通体验账户。