本文使用的安全凭证为密钥,密钥包括 AppId 和 ServerCode。
- AppId:用于标识 API 调用者身份,可以简单类比为用户名。
- ServerCode:用于验证 API 调用者的身份,可以简单类比为密码。
- 用户必须严格保管安全凭证,避免泄露,否则将危及财产安全。如已泄漏,请立刻重置该安全凭证。
申请安全凭证的具体步骤如下:
- 登录HIFIVE控制台。
- 前往产品授权管理控制台页面。
- 在产品授权管理申请页面申请审核成功后即可以创建一对密钥。
签名过程
您在访问时,需要按照下面的方法对请求进行签名处理。
请求实例
GET https://gateway-open.haifanwu.com \
-H "Authorization: HF3-HMAC-SHA1 Signature=45AD99A6BBBE928539E69EFD9C2AC6C3" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Host: gateway-open.haifanwu.com" \
-H "X-HF-Action: TrafficTagSheet" \
-H "X-HF-Version: V4.1.1" \
-H "X-HF-AppId: 170ae316b9b14c1b9c185988771bde16" \
-H "X-HF-Nonce: CgA1cq9jpI3Ku5JiwMwuPuqzWY30trM5" \
-H "X-HF-ClientId: hf2y7jk19a56qetq05" \
-H "X-HF-Timestamp: 1594696782451" \
-d '{"RecoNum": "10", "Page": "1","PageSize": "20"}'
1.使用请求参数构造规范化的请求字符串。
- a.按照参数名称的字典顺序对请求中所有的请求参数进行排序。
- b.将编码后的参数名称和值用英文等号(=)进行连接
- c.将等号连接得到的参数组合按步骤 1.a 排好的顺序依次使用“&”符号连接,即得到规范化请求字符串。
2.按照规定顺序用空格拼接请求类型和公共参数构造字符串。(请求类型、公共参数按照此顺序拼接:GET/POST、X-HF-Action、X-HF-Version、X-HF-AppId、X-HF-Nonce、X-HF-ClientId、'HF3-HMAC-SHA1'、X-HF-Timestamp)
3.将步骤 2 得到的字符串进行base64编码。
4.将步骤 1 中构造的规范化字符串拼接步骤 3 得到的base64编码,即得到待签名的字符串(如果请求参数为空,则直接跳过该步骤)。
5.得到签名值(Signature)。
- a.将上一步骤得到的字符串进行base64编码。
- b.对步骤a的结果,通过 hmacSha1 摘要算法签名(摘要算法参考hmacSha1(String base64, String serverCode),加密Key为serverCode,此示例中使用的serverCode=242d1e834d47d5f9,在做HMAC-SHA1哈希后,不要将得到的字节数组转换成字符串)。
- c.将上一步 b 的结果,做md5Hex处理,所得结果全部转为大写,即得到签名值(Signature)。
在线校验工具
您可以使用在线校验工具进行签名验证是否计算正确。