接口鉴权

所有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

鉴权参数生成工具:秘钥生成器