接口鉴权
所有api接口的调用都必须进行接口鉴权 即在http post 请求中加入一些请求头及请求参数(sig)
注意:系统会提供两个账户,鉴权信息要用到“用户中心”的账户和密码在对接数据查询中查询,鉴权要用到的信息账户Id即账户编号。
1 请求头
Content-Type:application/json;charset=utf-8;
Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
-
Authorization是包头验证信息 Authorization的值为 Base64编码(账户Id +冒号+时间戳) 其中账户Id可以去对接数据查询里查询。 系统会提供两个账号,一个是8xxx@xxx,另一个是xxx。对接数据查询用全是字母的账号查询。 例如: N00000000556:20161013113612 base64编码后: TjAwMDAwMDAwNTU2OjIwMTYxMDEzMTEzNjEy
-
冒号为英文冒号
- 时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与sig参数中时间戳相同。
2 请求参数(sig)
例如:
http://apis.xxxx.com/v20160818/customer/getTemplate/N00000000556
?sig=3E92F146297FCA751F63493877EC9719
-
URL后必须带有sig参数,例如sig=AAABBBCCCDDDEEEFFFGGG。
-
sig的值为 32位大写MD5加密 (帐号Id + 帐号APISecret +时间戳)
例如 N00000000556secret20161013113612
md5加密后为 88996D9907E0EE52C5DAF8EFFCC31CFC
-
时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳是24小时制,如:20140416142030,有效期为5分钟,即生成生成sig后必须在五分钟内请求接口。
-
APISecret 可以去对接数据查询里查询
3 请求体
请求体数据类型是JSON,如果接口不需要,可以不传。
例如:{"_id":"22e25d60-809d-11e6-ad5a-b7e3030127fb"}
4 情景举例
需求:访问查询用户资料接口
例如:
用户账号:N00000000556
当前时间:20161013164303
APISecret: 123456
Authorization: "TjAwMDAwMDAwNTU2OjIwMTYxMDEzMTY0MzAz"
sig:"AED8764EFF64286C14E1F26648FF140F"
请求方式: POST
URL: http://apis.xxxx.com/v20160818/customer/select/N00000000556
?sig=AED8764EFF64286C14E1F26648FF140F
请求头:
Content-Type:application/json;charset=utf-8;
Authorization: TjAwMDAwMDAwNTU2OjIwMTYxMDEzMTY0MzAz;
请求体:
{"version":"201610100019"}
请求成功返回:
鉴权失败返回:
{
"message": "Forbidden",
"code": 403
}
鉴权成功,请求体参数错误返回:
{
"code": 400,
"message": "please check your parameters"
}
示例代码:(以查询坐席状态接口为例)
NodeJS示例代码 apiDemo/demo.js
JAVA示例代码 apiDemo/src/com/m7/restapi/demo/ApiDemo.java
php示例代码 moor.php
asp示例代码 Moor.net
鉴权参数生成工具:秘钥生成器